1

我正在使用 Selenium Webdriver,2.25 我有一个本地集线器,使用 chrome 和 firefox 的这个 json 设置:

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

我可以像这样启动 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,文件“/ 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: Message: None ; Stacktrace:方法 innerGet 在 None 中抛出错误

但我可以像这样直接连接到 Chrome:

dd=webdriver.Chrome()

没有任何问题。

如何通过我的 Selenium Hub 访问 Chrome?

4

2 回答 2

2

我有完全相同的问题。

问题是,与 Firefox 不同,Chrome 需要单独的 chromdriver.exe 来充当浏览器和驱动程序之间的桥梁。

从文档中:

ChromeDriver 由三个独立的部分组成。有浏览器本身(“chrome”)、Selenium 项目提供的语言绑定(“驱动程序”)和从 Chromium 项目下载的可执行文件,它充当“chrome”和“驱动程序”之间的桥梁。此可执行文件称为“chromedriver”,但我们将尝试在此页面中将其称为“服务器”以减少混淆。

在此处下载 chromdriver.exe

并将其放入您的 chrome 二进制目录中。

然后,我使用 .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 驱动程序,有关此的信息here

更新


根据第一个链接中提供的示例 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 回答