examples - ¿Cómo uso el controlador HTMLUnit con Selenium de Python?
selenium python example code (3)
¿Cómo le digo a Selenium que use HTMLUnit?
Estoy ejecutando selenium-server-standalone-2.0b1.jar como un servidor Selenium en segundo plano, y los últimos enlaces de Python instalados con "pip install -U selenium".
Todo funciona bien con Firefox. Pero me gustaría utilizar HTMLUnit, ya que es más ligero y no necesita X. Este es mi intento de hacerlo:
>>> 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
Entonces, la pregunta es, ¿cómo se llama el controlador HTMLUnit? ¿Cómo lo habilito?
El código para HTMLUnit parece estar en la fuente de Selenium 2, por lo que esperaba que estuviera disponible de manera predeterminada como los otros navegadores. No puedo encontrar instrucciones sobre cómo habilitarlo.
Lo uso así:
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'')))
A partir de la versión 2.0b3 del cliente de python puede crear un controlador de web HTMLUnit a través de una conexión remota como esta:
from selenium import webdriver
driver = webdriver.Remote(
desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
driver.get(''http://www.google.com'')
También puede usar el HTMLUNITWITHJS
capacidad HTMLUNITWITHJS
para un navegador con soporte Javascript.
Tenga en cuenta que necesita ejecutar el servidor Selenium Java para que esto funcione, ya que HTMLUnit se implementa en el lado de Java.
utilizando el servidor selenium 2.20.0.jar y la versión correspondiente de python, puedo usar HtmlUnitDriver especificando el navegador como * simulacro
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'')