web-dev-qa-db-ja.com

Selenium ChromeDriverが新しくコンパイルされたヘッドレスクロム(Python)を認識しない

Selenium/ChromeDriverでChromiumの新しい(2016)headlessバージョンを使用しようとしています(以前は、Firefoxとxfvbを使用していましたが、これにより、はるかに良くなる)。

私が見つけた指示に基づいて、ソースからChromiumのヘッドレスバージョンをコンパイルしました(ビルド済みのバイナリは見つかりませんでした) here 次に、次のコードを使用してSeleniumから起動しました。

from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options

l_option = Options()
l_option.add_argument('headless')
l_option.add_argument('disable-notifications')
l_option.binary_location = '/home/fi11222/Headless_Chromium/headless_Shell'
l_driver = webdriver.Chrome(chrome_options=l_option)

同じコードが標準のクロムで動作します(binary.locationオプションを削除した場合)

ただし、次のエラーが発生します。

Selenium.common.exceptions.WebDriverException: Message: unknown error: unrecognized Chrome version: HeadlessChrome/59.0.3032.0
  (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.4.0-53-generic x86_64)

どうやら、ヘッドレスクロムバイナリは、ChromeDriverが認識しないバージョンIDでコンパイルされています。助けて !!

環境:

  • コンパイル:Ubuntu 16.04サーバー
  • セレン実行:Linux Mint 18.1
14
fi11222

ChromeHeadlessは このパッチ (メッセージの投稿後に作成)以降、chromedriver 2.29(2017年4月にリリース)以降でのみ利用可能です。このchromedriver実行可能ファイルがPATHで利用可能であり、Seleniumが他の利用可能なchromedriverの代わりにそれを選択していることを確認してください。

また、- headless Chrome documentation によると、さらに2つのフラグを渡す必要があることに注意してください。

l_option.add_argument('remote-debugging-port=9222')
l_option.add_argument('disable-gpu')

ヘッドレスのビルド済みバイナリについてはChrome-このオプションはChrome 57以降に利用できるため、公式のGoogleリポジトリを通じて現在配布されているすべてのバージョンでサポートされています(つまり、安定Chrome 58および不安定Chrome 59)です。これは Chrome 59 のハイライトであるため、機能が完成するまで、いくつかの粗いエッジを期待します安定した。

13
Mirek Długosz