Selenium运行错误的浏览器(默认)

时间:2015-01-07 22:46:52

标签: python firefox selenium

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。 enter image description here

我在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?

2 个答案:

答案 0 :(得分:3)

问题出在这一行:

wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browser':'firefox'})

browser更改为browserName会解决问题。使用

wd = webdriver.Remote('http://localhost:4444/wd/hub', {'browserName':'firefox'})

代替。

答案 1 :(得分:0)

另一个解决方案(非常接近接受的答案)是使用预定义的 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 的字典。