Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

RaspberryPi 4B上に組んだSlemium環境にSSHで繋いだらリモートデバッグ扱いになるので適正なオプションをつける

RaspberryPi 4B上に組んだSlemium環境にSSHで繋いだところ、”DevToolsActivePort file doesn't exist”とエラーに。
調べてみたところ、SSH越しではChromeのリモートデバッグという扱いになるようで、Selemiumにも適正なオプションをつけないといけないらしいです。

実際のところ

実行環境

問題のエラー

下のトコだけ切り出すと

selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

とでて、ポートを設定するファイルがないとかなんとか。
ポートと言われてもね……という感じでしたが、調べてみたところSSH越しではリモートデバッグという扱いになり
リモートデバッグ用のポートを割り付けてあげないといけないそうで。
……なるほどね??
developer.mozilla.org

前回の奴をベースにすると、オプションのところで"--remote-debugging-port=9222"というオプションを追加してあげるよう。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# ブラウザの場所は絶対PATHとして指定
CHROME_BIN = '/usr/bin/chromium-browser'
CHROME_DRIVER = '/usr/lib/chromium-browser/chromedriver'

# 実行オプション
options = Options()
options.binary_location = CHROME_BIN
options.add_argument('--headless')
options.add_argument("--remote-debugging-port=9222")  # <= コレ

# 実行インスタンス
driver = webdriver.Chrome(CHROME_DRIVER, options=options)

#...処理

9222は調べたところ、特に有名ドコロと衝突してるわけではなさそうなので都合のいい数字に変更しても大丈夫です。
また、ufwでしっかりルールを決めているときは、それに従いましょう。

参考もと

stackoverflow.com