Wie verwende ich die Htmlunit-Treiber mit Selen aus Python?
-
30-09-2019 - |
Frage
Wie kann ich Selen sagen Htmlunit benutzen?
Ich bin mit Selen-Server-Standalone-2.0b1.jar als Selen-Server im Hintergrund, und die neuesten Python-Bindings mit installiertem "pip installieren -U Selen".
funktioniert alles einwandfrei mit Firefox. Aber ich möchte Htmlunit verwenden, da es ein geringeres Gewicht und braucht nicht X. Dies ist mein Versuch, dies zu tun:
>>> 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
Die Frage ist also, was ist der Htmlunit Fahrer genannt? Wie aktiviere ich es?
Der Code für Htmlunit scheint für Selen 2 in der Quelle zu sein, so erwartete ich es wie die anderen Browser standardmäßig zur Verfügung steht. Ich kann keine Anleitung, wie es zu aktivieren.
Lösung
mit dem Selen 2.20.0.jar Server und passende Python-Version, ich bin in der Lage HtmlUnitDriver zu verwenden, indem Sie den Browser als * Angabe 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')
Andere Tipps
Wie der 2.0b3 Freigabe des Python-Client können Sie erstellen eine Htmlunit WebDriver über eine Remote-Verbindung wie folgt:
from selenium import webdriver
driver = webdriver.Remote(
desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
driver.get('http://www.google.com')
Sie können auch die HTMLUNITWITHJS
Fähigkeit Element für einen Browser mit Javascript-Unterstützung verwenden.
Beachten Sie, dass Sie benötigen den Selenium Java-Server für diese Arbeit auszuführen, da Htmlunit auf der Java-Seite implementiert ist.
Ich benutze es wie folgt aus:
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')))