Chrome で Selenium WebDriver Python バインディングを実行する 質問する

Chrome で Selenium WebDriver Python バインディングを実行する 質問する

Selenium の使用中に問題が発生しました。私のプロジェクトでは Chrome を使用する必要があります。しかし、Selenium で起動した後、そのブラウザに接続できません。

何らかの理由で、Selenium は Chrome を単独で見つけることができません。パスを含めずに Chrome を起動しようとすると、次のようになります。

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

この問題を解決するために、Chrome を起動するコードに Chromium パスを含めました。しかし、インタープリターは接続するソケットを見つけることができません。

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

また、次のようにして Chrome を起動して問題を解決しようとしました。

chromium --remote-shell-port=9222

しかし、これもうまくいきませんでした。

PS. 私のシステムに関する情報は次のとおりです:

www-client: chromium 15.0.874.121
dev-lang:   python 2.7.2-r3 Selenium 2.11.1
OS:         GNU/Linux Gentoo Kernel 3.1.0-gentoo-r1

ベストアンサー1

スタンドアロンの ChromeDriver バイナリ (Chrome ブラウザ バイナリとは異なります) がパス内にあるか、webdriver.chrome.driver 環境変数で使用可能であることを確認する必要があります。

見るhttp://code.google.com/p/selenium/wiki/ChromeDriver配線方法の詳細については、こちらをご覧ください。

編集:

そうですね、パスからchromedriverバイナリを読み込むPythonバインディングのバグのようですまたは環境変数。Chromedriver がパスにない場合は、コンストラクタに引数として渡す必要があるようです。

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()

おすすめ記事