我正在尝试使用Python中的HTMLUnit WebDriver,代码如下:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.remote.webdriver import WebDriver
if __name__ == '__main__':
webdriver = WebDriver('http://127.0.0.1:4444/wd/hub', DesiredCapabilities.HTMLUNIT)
webdriver.get('http://www.google.com')
...并收到以下错误:
Traceback (most recent call last):
File "bcc_mon_webdriver.py", line 8, in <module>
webdriver = WebDriver('http://127.0.0.1:4444/wd/hub', DesiredCapabilities.HTMLUNIT)
File "c:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 63, in __init__
self.start_session(desired_capabilities, browser_profile)
File "c:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 105, in start_session
'desiredCapabilities': desired_capabilities,
File "c:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 156, in execute
self.error_handler.check_response(response)
File "c:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 147, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u'Error forwarding the new session cannot find : {platform=ANY, browserName=htmlunit, version=}' ; Stacktrace: Method process threw an error in RequestHandler.java
我在版本2.25中也使用selenium-server-standalone-2.25.0.jar
和Python selenium
模块。 Selenium服务器在localhost上运行,它可以正常运行DesiredCapabilities.FIREFOX
。
我是否必须手动安装htmlunit? selenium网站说standalone-jar包含所有依赖项。
答案 0 :(得分:2)
问题是您没有与{platform=ANY, browserName=htmlunit, version=}
模式匹配的节点。要修复它,您需要使用这些浏览器设置启动selenium节点,如下所示:
java -jar selenium-server-standalone-2.25.0.jar -role node -hub http://localhost:4444/grid/register -browser browserName=htmlunit
在Selenium wiki(http://code.google.com/p/selenium/wiki/Grid2)上,它说:
“默认情况下,这会启动11个浏览器:5个Firefox,5个Chrome,1个Internet 资源管理器“。
因此,为了能够使用不同的浏览器 - 例如htmlunit
- 您必须使用-browser参数启动节点,检查desired_capabilities.py
文件(位于selenium / webdriver / common下的selenium egg中) /)以获取每个浏览器所需参数的参考。