13

Selenium に HTMLUnit を使用するように指示するにはどうすればよいですか?

バックグラウンドでSeleniumサーバーとしてselenium-server-standalone-2.0b1.jarを実行しており、最新のPythonバインディングが「pip install -U selenium」でインストールされています。

すべてが Firefox で正常に動作します。しかし、軽量でXを必要としないため、HTMLUnitを使用したいと思います。これは私の試みです:

>>> 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 のソースにあるようで、他のブラウザーと同様にデフォルトで利用できると思っていました。有効にする方法についての説明が見つかりません。

4

3 に答える 3

15

Python クライアントの 2.0b3 リリース以降、次のようにリモート接続を介して HTMLUnit Webdriver を作成できます。

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

HTMLUNITWITHJSJavascript をサポートするブラウザーの機能項目を使用することもできます。

HTMLUnit は Java 側に実装されているため、これを機能させるには Selenium Java サーバーを実行する必要があることに注意してください。

于 2011-04-01T19:55:22.770 に答える
5

Selenium 2.20.0.jar サーバーと一致する python バージョンを使用すると、ブラウザーを *mock として指定することで HtmlUnitDriver を使用できます

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')
于 2012-03-08T22:05:44.753 に答える
2

私はこのように使用します:

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')))
于 2011-02-17T12:42:27.127 に答える