我正在使用Selenium Webdriver,2.25我有一个本地集线器设置了这个json设置chrome和firefox:
[
{
"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行,in 在 init 中输入文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第62行 self.start_session(desired_capabilities,browser_profile) 在start_session中输入文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第104行 'desiredCapabilities':desired_capabilities, 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第155行,执行 self.error_handler.check_response(响应) 在check_response中输入文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py”,第147行 提出exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.WebDriverException:消息:无; Stacktrace:方法innerGet在无
中抛出错误
但我可以像这样开始直接连接Chrome:
dd=webdriver.Chrome()
没有任何问题。
如何通过我的Selenium Hub进入Chrome?
答案 0 :(得分:2)
我确实遇到了同样的问题。
事情是,与Firefox不同,Chrome需要单独的chromdriver.exe作为浏览器和驱动程序之间的桥梁。
来自文档:
ChromeDriver由三个独立的部分组成。有 浏览器本身(“chrome”),由语言提供的语言绑定 Selenium项目(“驱动程序”)和从中下载的可执行文件 铬项目,作为“铬”和“铬”之间的桥梁 “司机”。这个可执行文件被称为“chromedriver”,但我们会尝试和 在此页面中将其称为“服务器”以减少混淆。
并将其放入您的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 driver documentation
答案 1 :(得分:1)
您需要设置Chrome驱动程序,有关here
的信息<强>更新强>
基于sample json setup file 和第一个链接中提供的步骤,似乎浏览器名称不应该在Upper,但实际上是小写。
所以将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())