Как использовать драйвер HTMLUnit с Selenium из Python?
Как сказать Selenium для использования HTMLUnit?
Я запускаю selenium-server-standalone-2.0b1.jar в качестве сервера Selenium в фоновом режиме и последние привязки Python, установленные с помощью "pip install -U selenium".
Все отлично работает с 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
Итак, вопрос в том, что вызвал драйвер HTMLUnit? Как включить его?
Код для HTMLUnit, похоже, находится в источнике Selenium 2, поэтому я ожидал, что он будет доступен по умолчанию, как и другие браузеры. Я не могу найти инструкции по его включению.
Ответы
Ответ 1
используя сервер selenium 2.20.0.jar и соответствующую версию python, я могу использовать HtmlUnitDriver, указав браузер как * mock
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')
Ответ 2
Начиная с версии 2.0b3 клиента python вы можете создать веб-редактор HTMLUnit через удаленное соединение, например:
from selenium import webdriver
driver = webdriver.Remote(
desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
driver.get('http://www.google.com')
Вы также можете использовать элемент возможностей HTMLUNITWITHJS
для браузера с поддержкой Javascript.
Обратите внимание, что для этого нужно запустить сервер Selenium Java, чтобы он работал, поскольку HTMLUnit реализован на стороне Java.
Ответ 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')))