如何通过Python绑定在Selenium中使用HtmlUnit驱动?

15 投票
4 回答
31403 浏览
提问于 2025-04-16 06:27

我正在通过Python的WebDriver来使用Selenium,相关的绑定可以在谷歌的网站上找到。根据文档,它支持四种浏览器:Chrome、IE、Firefox和HtmlUnit。我可以通过 from selenium.firefox.webdriver import WebDriver 来导入Firefox的驱动,也可以通过 from selenium.chrome.webdriver import WebDriver 来导入Chrome的驱动。

但是,没有类似的HtmlUnit模块。我该如何导入HtmlUnit驱动呢?

4 个回答

3

我这样使用它:

from selenium.remote import connect                                                                                                                          

b = connect('htmlunit')                                                                                                                                      
b.get('http://google.com')                                                                                                                                   

q = b.find_element_by_name('q')                                                                                                                              
q.send_keys('selenium')                                                                                                                                      
q.submit()                                                                                                                                                   

for l in b.find_elements_by_xpath('//h3/a'):                                                                                                                 
    print('%s\n\t%s\n' % (l.get_text(), l.get_attribute('href')))
5

HtmlUnit 是一个 Java 库,所以如果你不想用 Java 的 WebDriver 绑定,唯一的选择就是使用 RemoteWebDriver。你需要先启动一个 Selenium 服务器,然后连接到这个服务器,并指定 HtmlUnit 作为你想要的浏览器。

我对 Python 不是很熟悉,但根据 http://code.google.com/p/selenium/wiki/PythonBindings 的内容,它应该看起来像这样:

from selenium.remote import connect
from selenium import HTMLUNIT


wd = connect(HTMLUNIT, server="http://<selenium_server>:4444")
15

我在这个链接找到了答案:https://stackoverflow.com/a/5518175/125170

在python客户端的2.0b3版本中,你可以通过远程连接创建一个HTMLUnit的webdriver,方法如下:

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

你还可以使用HTMLUNITWITHJS这个选项来支持带有Javascript的浏览器。

需要注意的是,要让这个功能正常工作,你需要运行Selenium的Java服务器,因为HTMLUnit是在Java环境下实现的。

撰写回答