如何在Python中使用带有Selenium的HTMLUnit驱动程序?

fra*_*cus 13 python selenium-rc htmlunit selenium-webdriver

如何告诉Selenium使用HTMLUnit?

我在后台运行selenium-server-standalone-2.0b1.jar作为Selenium服务器,并使用"pip install -U selenium"安装最新的Python绑定.

一切都适用于Firefox.但我想使用HTMLUnit,因为它重量更轻,不需要X.这是我尝试这样做的:

>>> import selenium
>>> s = selenium.selenium("localhost", 4444, "*htmlunit", "http://localhost/")
>>> s.start()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/selenium/selenium/selenium.py", line 189, in start
    result = self.get_string("getNewBrowserSession", start_args)
  File "/usr/local/lib/python2.6/dist-packages/selenium/selenium/selenium.py", line 223, in get_string
    result = self.do_command(verb, args)
  File "/usr/local/lib/python2.6/dist-packages/selenium/selenium/selenium.py", line 217, in do_command
    raise Exception, data
Exception: Failed to start new browser session: Browser not supported: *htmlunit

Supported browsers include:
  *firefox
  *mock
  *firefoxproxy
  *pifirefox
  *chrome
  *iexploreproxy
  *iexplore
  *firefox3
  *safariproxy
  *googlechrome
  *konqueror
  *firefox2
  *safari
  *piiexplore
  *firefoxchrome
  *opera
  *iehta
  *custom
Run Code Online (Sandbox Code Playgroud)

所以问题是,什么是HTMLUnit驱动程序?我该如何启用它?

HTMLUnit的代码似乎是Selenium 2的源代码,所以我希望它像其他浏览器一样默认可用.我找不到有关如何启用它的任何说明.

Jam*_*rty 15

从python客户端的2.0b3版本开始,您可以通过远程连接创建HTMLUnit webdriver,如下所示:

from selenium import webdriver
driver = webdriver.Remote(
  desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
driver.get('http://www.google.com')
Run Code Online (Sandbox Code Playgroud)

您还可以将该HTMLUNITWITHJS功能项用于具有Javascript支持的浏览器.

请注意,您需要运行Selenium Java服务器才能工作,因为HTMLUnit是在Java端实现的.


小智 5

使用selenium 2.20.0.jar服务器和匹配的python版本,我可以通过将浏览器指定为*mock来使用HtmlUnitDriver

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

server_url = "http://%s:%s/wd/hub" % (test_host, test_port)
dc = DesiredCapabilities.HTMLUNIT
wd = webdriver.Remote(server_url, dc)
wd.get('http://www.google.com')
Run Code Online (Sandbox Code Playgroud)