Selenium 运行错误的浏览器(默认)
Selenium runs the wrong browser (default)
tl/dr:我做错了什么?
我正在尝试 运行 本地 selenium 测试并与 Browserstack 平台兼容。我使用此代码在本地连接:
wd = webdriver.Remote('http://xxxxxxxx@hub.browserstack.com:80/wd/hub', {'browser':'firefox'})
wd.get('http://google.com')
wd.get_screenshot_as_file('/tmp/googl.png')
wd.close()
我在 /tmp/
中看到了一个很好的截图。
现在我尝试对本地 Selenium 做同样的事情:
$ java -jar /usr/share/java/selenium-server-standalone-2.44.0.jar &
服务器名义上启动。我尝试使用 Firefox (30.0) 创建一个会话,它工作正常。 (默认浏览器是 Opera。)
那我试试运行Python代码:
wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browser':'firefox'})
wd.get('http://google.com')
wd.get_screenshot_as_file('/tmp/googl2.png')
wd.close()
Selenium 打开 Opera 而不是 Firefox。
我在 Python 控制台中看到了这个:
Message: <html>
<head>
<title>Error 500 org/json/JSONObject</title>
</head>
<body>
<h2>HTTP ERROR: 500</h2><pre>org/json/JSONObject</pre>
<p>RequestURI=/wd/hub/session</p>
<p><i><small><a href="http://jetty.mortbay.org">Powered by Jetty://</a></small></i></p>
为什么它打开 Opera 而不是 Firefox?
问题出在这一行:
wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browser':'firefox'})
将 browser
更改为 browserName
将修复它。使用
wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browserName':'firefox'})
相反。
另一种解决方案(非常接近接受的答案)是使用预定义的 DesiredCapabilities constants:
from selenium import webdriver
capabilities = webdriver.DesiredCapabilities.FIREFOX.copy()
wd = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=capabilities)
在这种情况下 capabilities
是一个已经包含 browserName
的字典 属性 设置为 firefox
.
tl/dr:我做错了什么?
我正在尝试 运行 本地 selenium 测试并与 Browserstack 平台兼容。我使用此代码在本地连接:
wd = webdriver.Remote('http://xxxxxxxx@hub.browserstack.com:80/wd/hub', {'browser':'firefox'})
wd.get('http://google.com')
wd.get_screenshot_as_file('/tmp/googl.png')
wd.close()
我在 /tmp/
中看到了一个很好的截图。
现在我尝试对本地 Selenium 做同样的事情:
$ java -jar /usr/share/java/selenium-server-standalone-2.44.0.jar &
服务器名义上启动。我尝试使用 Firefox (30.0) 创建一个会话,它工作正常。 (默认浏览器是 Opera。)
那我试试运行Python代码:
wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browser':'firefox'})
wd.get('http://google.com')
wd.get_screenshot_as_file('/tmp/googl2.png')
wd.close()
Selenium 打开 Opera 而不是 Firefox。
我在 Python 控制台中看到了这个:
Message: <html>
<head>
<title>Error 500 org/json/JSONObject</title>
</head>
<body>
<h2>HTTP ERROR: 500</h2><pre>org/json/JSONObject</pre>
<p>RequestURI=/wd/hub/session</p>
<p><i><small><a href="http://jetty.mortbay.org">Powered by Jetty://</a></small></i></p>
为什么它打开 Opera 而不是 Firefox?
问题出在这一行:
wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browser':'firefox'})
将 browser
更改为 browserName
将修复它。使用
wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browserName':'firefox'})
相反。
另一种解决方案(非常接近接受的答案)是使用预定义的 DesiredCapabilities constants:
from selenium import webdriver
capabilities = webdriver.DesiredCapabilities.FIREFOX.copy()
wd = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=capabilities)
在这种情况下 capabilities
是一个已经包含 browserName
的字典 属性 设置为 firefox
.