Comment puis-je utiliser le pilote HTMLUnit avec Sélénium de Python?
-
30-09-2019 - |
Question
Comment puis-je dire Sélénium utiliser HTMLUnit?
Je suis en cours d'exécution en tant que serveur Sélénium sélénium serveur autonome-2.0b1.jar en arrière-plan, et les dernières liaisons Python installés avec « pip installer -U sélénium ».
Tout fonctionne très bien avec Firefox. Mais je voudrais utiliser HTMLUnit, car il est un poids plus léger et n'a pas besoin X. Ceci est ma tentative de le faire:
>>> 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
La question est, quel est le pilote HTMLUnit appelé? Comment puis-je activer?
Le code HTMLUnit semble être la source de Sélénium 2, donc je m'y attendais qu'il soit disponible par défaut comme les autres navigateurs. Je ne peux pas trouver des instructions sur la façon de l'activer.
La solution
en utilisant le serveur 2.20.0.jar de sélénium et correspondant à la version python, je suis en mesure d'utiliser HtmlUnitDriver en spécifiant le navigateur comme * 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')
Autres conseils
de la version 2.0b3 du client python, vous pouvez créer un HTMLUnit WebDriver via une connexion à distance comme ceci:
from selenium import webdriver
driver = webdriver.Remote(
desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
driver.get('http://www.google.com')
Vous pouvez également utiliser l'élément de capacité de HTMLUNITWITHJS
pour un navigateur avec Javascript.
Notez que vous devez exécuter le serveur Java Sélénium pour que cela fonctionne, puisque HTMLUnit est mis en œuvre sur le côté Java.
Je l'utilise comme ceci:
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')))