2

我正在尝试通过以下代码使用 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.jarPython模块。seleniumSelenium 服务器在 localhost 上运行,并且可以与例如DesiredCapabilities.FIREFOX.

我必须手动安装 htmlunit 吗?selenium 网站说standalone-jar 包含所有依赖项。

4

1 回答 1

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 Explorer。”

因此,为了能够使用不同的浏览器 - 例如htmlunit- 您必须使用 -browser 参数启动节点,检查desired_capabilities.py文件(位于 selenium/webdriver/common/ 下的 selenium egg 中)以了解每个浏览器需要哪些参数.

于 2012-08-29T07:29:24.813 回答