1

私はSeleniumWebdriverを使用しています。2.25ChromeとFirefox用にこのjson設定でローカルハブを設定しています。

[
    {
        "browserName": "firefox",
        "maxInstances": 5,
        "seleniumProtocol": "WebDriver"
    },
    {
        "browserName": "chrome",
        "maxInstances": 5,
        "seleniumProtocol": "WebDriver"
    }
],

私はこのようにウェブドライバーのFirefoxセッションを開始することができます:

capability = getattr(webdriver.DesiredCapabilities, "FIREFOX")
dd=webdriver.Remote('http://localhost:4444/wd/hub', capability)

これは正常に機能しますが、次のようにChromeセッションを開始しようとすると次のようになります。

capability = getattr(webdriver.DesiredCapabilities, "CHROME")
dd=webdriver.Remote('http://localhost:4444/wd/hub', capability)

このエラーが発生します:

トレースバック(最後の最後の呼び出し):ファイル ""、1行目、ファイル "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py"、62行目、init self.start_session(desired_capabilities、browser_profile)ファイル "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py"、104行目、start_session'desiredCapabilities':desired_capabilities、File "/ usr / local / lib / python2.7 / dist-packages / selenium / webdriver / remote / webdriver.py "、155行目、実行self.error_handler.check_response(response)ファイル" /usr/local/lib/python2.7 /dist-packages/selenium/webdriver/remote/errorhandler.py "、147行目、check_responseでexception_class(message、screen、stacktrace)selenium.common.exceptions.WebDriverExceptionを発生させます:メッセージ:なし; Stacktrace:メソッドinnerGetがNoneでエラーをスローしました

しかし、私は次のようにChromeへの直接接続を開始できます。

dd=webdriver.Chrome()

問題ありません。

Seleniumハブを介してChromeにアクセスするにはどうすればよいですか?

4

2 に答える 2

2

私はまったく同じ問題を抱えていました。

Firefoxとは異なり、Chromeはブラウザとドライバ間のブリッジとして機能するために別個のchromdriver.exeを必要とします。

ドキュメントから:

ChromeDriverは、3つの別個の部分で構成されています。ブラウザ自体(「chrome」)、Seleniumプロジェクト(「ドライバ」)によって提供される言語バインディング、および「chrome」と「ドライバ」の間のブリッジとして機能するChromiumプロジェクトからダウンロードされた実行可能ファイルがあります。この実行可能ファイルは「chromedriver」と呼ばれますが、混乱を避けるために、このページでは「サーバー」と呼びます。

ここからchromdriver.exeをダウンロードします

そしてそれをあなたのクロームバイナリディレクトリに入れてください。

次に、.batファイルを使用して、次のリストでハブを起動します。

java -Dwebdriver.chrome.driver="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" -jar D:\soft\selenium-server-standalone-2.29.0.jar

次に、Linuxボックスで次のPythonコードを実行します。これは、chromedriver.exeをChromeディレクトリに配置し、正しいパスパラメーターを使用してハブを起動すると問題なく機能しました。

from selenium import webdriver
url = "http://192.168.1.115:4444/wd/hub"
driver = webdriver.Remote(command_executor = url, desired_capabilities = {'browserName':'chrome'})
driver.get("http://google.com")

これがあなたと同じ問題を抱えている他の人たちに役立つことを願っています。もちろん、解決策を見つけることは、Firefoxのアプローチを当然のこととしてとらえないことでした。RTFM: Chromeドライバーのドキュメント

于 2013-01-30T09:48:11.300 に答える
1

Chrome ドライバーをセットアップする必要があります。詳細については、こちらを参照してください。

アップデート


サンプルの json セットアップ ファイルと最初のリンクで提供されている手順に基づいて 、ブラウザー名は大文字ではなく、実際には小文字であるべきだと思われます。

だからCHROMEに変更chrome

WebDriver driver = new RemoteWebDriver("http://localhost:9515", DesiredCapabilities.chrome());
driver.get("http://www.google.com");

そしてあなたの場合、私は仮定します

dd=webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.chrome())
于 2012-10-25T19:25:09.853 に答える