2011-01-06 22 views
13

Jak mogę powiedzieć, że Selenium używa HTMLUnit?Jak używać sterownika HTMLUnit z Selenium w Pythonie?

Używam selen-serwer-standalone-2.0b1.jar jako serwer Selenium w tle, a najnowsze powiązania Pythona są instalowane z opcją "pip install -U selenium".

Wszystko działa poprawnie z Firefoksem. Ale chciałbym użyć HtmlUnit, jak to jest lżejsze i nie wymaga X. To jest moja próba zrobić:

>>> 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 

Więc pytanie brzmi, co jest kierowca HtmlUnit nazywa? Jak mogę to włączyć?

Kod HTMLUnit wydaje się być źródłem Selenium 2, więc spodziewałem się, że będzie on domyślnie dostępny, tak jak inne przeglądarki. Nie mogę znaleźć instrukcji, jak to włączyć.

+0

Mam określili to z selenu-RC, a także, jak Nie mam nic przeciwko temu, czy używam Selenium 2 czy Selenium-RC. – frabcus

+0

możliwy duplikat [Jak używać sterownika HtmlUnit z Selenium przez powiązania w Pythonie?] (Http://stackoverflow.com/questions/4081724/how-do-i-use-the-htmlunit-driver-withselselum -poprzez-python-wiązania) – CraigTeegarden

Odpowiedz

5

użyciu serwera selen 2.20.0.jar i dopasowanie wersji Pythona, jestem w stanie wykorzystać HtmlUnitDriver określając przeglądarkę jako * 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

używam go tak:

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'))) 
+0

Gdzie jest jakikolwiek sposób zapewnienia interfejsu Selenium 1 przez HtmlUnit? – uhbif19

15

Jak uwalniania 2.0b3 klienta Pythona można tworzyć HtmlUnit webdriver poprzez zdalne połączenie tak:

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

można również użyj elementu możliwości HTMLUNITWITHJS dla przeglądarki z obsługą JavaScript.

Należy pamiętać, aby uruchomić serwer Java Selenium, aby działało, ponieważ HTMLUnit jest implementowany po stronie Java.