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


147

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'

私はまたクロムを起動して問題を解決しようとしました:

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

「--remote-shell-port」は有効なコマンドラインオプションではないことをお知らせします。参照:peter.sh/experiments/chromium-command-line-switches( "--remote-debugging-port"は正しいものです。そのオプションを使用する前にすべてのchromiumインスタンスを閉じる必要があることに注意してください。つまり、既存のブラウザセッションの新しいウィンドウは機能しません)。
dpat

回答:


133

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

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

編集:

そうです、パスまたは環境変数からchromedriverバイナリを読み取るwrtの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()

そのことを忘れて申し訳ありません。このリンクを取得しました。
Akendo

2
Firefox Webdriverの代わりにChromedriverを試してみました..ほぼ3倍のパフォーマンス向上..
UberNeo

4
また、コンストラクタに渡される引数はChromeDriverバイナリへのパスであり、ChromeDriverバイナリ含むディレクトリはないことを述べておきます(何が問題かを理解するために過去30分を無駄にしました)。
TheRookierLearner 2014年

107

Linuxの場合

  1. Chrome brwoserの最新バージョンがインストールされていることを確認してください-> chromium-browser -version
  2. そうでない場合は、最新バージョンのChromeをインストールしてください sudo apt-get install chromium-browser
  3. こちらから適切なバージョンのChromeドライバーを入手してください
  4. chromedriver.zipを解凍します
  5. ファイルを/usr/binディレクトリに移動しますsudo mv chromedriver /usr/bin
  6. 後藤/usr/binディレクトリcd /usr/bin
  7. ここで、sudo chmod a+x chromedriver実行可能とマークするようなものを実行する必要があります。
  8. 最後に、コードを実行できます。

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()
    display.stop()

1
非常に素晴らしい!注:64ビットのLinuxを実行していますが、32ビットのchromedriverでのみ機能しました。
Imran 2015年

Ubuntu(14.04)では、chromium-chromdriverパッケージを(例えばapt-getを使用して)インストールし、chromedriverファイルのパスをPATHシェル変数PATH = "$ {PATH}":/ usr / lib / chromium-browser /に追加できます。これを.bashrcに追加すると、セレンでテストするたびに設定する必要がなくなります。
Arpad Horvath 2016年

1
実際には、この回答にはもっと多くの賛成票があるはずです。基本的に、これはgeckodriverのようなすべてのドライバーのための方法です。
holzkohlengrill 2016年

私のchromium-browserバージョンは(Chromium 67.0.3396.99 Built on Ubuntu、Ubuntu 16.04で実行)と記載されていますが、リンクのバージョンは2.0-2.9のみです。助けが要る。
Vaibhav Maheshwari

93

Mac OSXのみ

より簡単に始めるには(すでに自作がインストールされていると仮定しますが、そうでない場合は、最初に自作を行い、自作をより良いものにするために)次のコマンドを実行するだけです。

brew install chromedriver

これでchromedriverがパスに追加され、すべての準備が整います。


Macでは動作しません。selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx 2016

1
@wyx環境が正しくセットアップされていない可能性があります。実行brew doctorしてみて、何かが見つかるかどうかを確認してください。
Jachin 2016

2
これは、Macを持っていることに満足しているときの、温かくあいまいな瞬間の1つです。とても簡単。
ユーザー

ハート!醸造が大好き
RHSMan 2017年


23

窓はchromedriver.exe下に置いてください<Install Dir>/Python27/Scripts/


そしてどこにubuntuを置くのですか?int /usr/lib/または他のどこか?
Gaurav Jain

ファイルPATH/Scripts/そこに置くだけでは不十分で、ファイルride.pyが機能する場所に配置されました。
Qwerty 2014

1

Google ChromeでSelenium Pythonテストを実行するには2つの方法があります。私はWindows(私の場合はWindows 10)を検討しています:

前提条件:https : //sites.google.com/a/chromium.org/chromedriver/downloadsから最新のChromeドライバーをダウンロードします。

方法1:

i)ダウンロードしたzipファイルを任意のディレクトリ/場所に抽出します
ii)以下のようにコードに実行可能パスを設定します。

self.driver = webdriver.Chrome(executable_path='D:\Selenium_RiponAlWasim\Drivers\chromedriver_win32\chromedriver.exe')

方法2:

i)chromedriver.exeを/ Python / Scripts /に貼り付けます(私の場合、フォルダはC:\ Python36 \ Scriptsでした)
ii)次に、以下のように簡単なコードを記述します。

self.driver = webdriver.Chrome()

-1

WindowsのIDEの場合:

パスが機能しない場合はchromedriver.exe、このプロジェクト構造のように、をプロジェクトに追加してみてください。

chromedriver.exe

次にchromedriver.exe、メインファイルにをロードする必要があります。私はをロードしdriver.exeましたdriver.py

def get_chrome_driver():
return webdriver.Chrome("..\\content\\engine\\chromedriver.exe",
                            chrome_options='--no-startup-window')

..driver.py's上位ディレクトリを意味します

.driver.pyが配置されているディレクトリを意味します

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.