RaspberryPi 4B上に組んだSlemium環境にSSHで繋いだところ、”DevToolsActivePort file doesn't exist”とエラーに。
調べてみたところ、SSH越しではChromeのリモートデバッグという扱いになるようで、Selemiumにも適正なオプションをつけないといけないらしいです。
実際のところ
実行環境
- Ubuntu 20.10 on Raspberry Pi 4B
- Python3.8
- ChromeDriver 88.0.4324.150 (arm64)
問題のエラー
下のトコだけ切り出すと
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でしっかりルールを決めているときは、それに従いましょう。