web-dev-qa-db-ja.com

GUIなしでSelenium(Firefox)Webドライバーを実行することはできますか?

実稼働サーバーをUbuntu -desktop 10.04からUbuntu -server 12.04にアップグレードすることを検討しています。

Selenium Web Driverなど、現在のデスクトップOSでさまざまなサービスを実行しています。私の質問は、CLIベースのシステムからSelenium Web Driverを実行できますか?

私の当面の考えは、Firefoxに依存しているため不可能だと思いますが、誰かが間違っていることを証明してもらいたいのです!

102
nonshatter

探しているのは headless-browser です。

はい、SeleniumをFirefoxでヘッドレスで実行できます。ここに post があります。

Xvfbをセットアップする手順の概要は次のとおりです

#install Xvfb
Sudo apt-get install xvfb

#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99    

#you are now having an X display by Xvfb
93
grahaminn

ブラウザウィンドウを簡単に非表示にできました。

ただ PhantomJSをインストール 。次に、この行を変更します。

driver = webdriver.Firefox()

に:

driver = webdriver.PhantomJS()

コードの残りの部分を変更する必要はなく、ブラウザは開きません。デバッグのために、コードのさまざまなステップでdriver.save_screenshot('screen.png')を使用するか、開発中にFirefox Webドライバーを使用し続けます。

20

ヘッドレスブラウザのサポートが必要な場合は、別のアプローチを採用できます。

https://github.com/detro/ghostdriver

Selenium Conferenceで発表され、現在も開発中です。 PhantomJSをブラウザーとして使用し、HTMLUnitDriverよりもはるかに優れています。スクリーンショットはまだありませんが、まだ活発に開発されています。

10
haroonzone

はい。 Webドライバーの起動中にHTMLUnitDriverの代わりにFirefoxDriverを使用できます。これは、ヘッドレスブラウザーのセットアップです。詳細は こちら をご覧ください。

8
A.J

オプションは、次のようにpyvirtualdisplayを使用することです。

from pyvirtualdisplay import Display

display = Display(visible=0, size=[800, 600])
display.start()

#do Selenium job here

display.close()

短いバージョンは次のとおりです。

with Display() as display:
    # Selenium job here

通常、これはpythonのxvfbのカプセル化であり、何らかの形でより便利です。

ちなみに、PhantomJSはヘッドレスブラウザであり、使用するとウィンドウが開きませんが、PhantomJSはまだ必要動作するGUI環境です。

ヘッドレスモード(PuTTY接続のコンソール)でPhantomJS()の代わりにFirefox()を使用すると、エラーコード-6が発生しました。ただし、デスクトップ環境ではすべて問題ありません。

4
郑文勋

更新:ヘッドレスFirefoxを実行するためにXVFBは必要なくなりました。 Linux上のFirefox v55 +およびWindows/Mac上のFirefox v56 +は、ヘッドレス実行をサポートするようになりました。

ここに使用方法のドキュメントをいくつか追加しました。

https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java

3

もう1つのオプションはGhostDriverで、これは現在WebDriverによって公式にサポートされています: Ghostdriver actual performance gain

2
Alister Scott

HtmlUnitDriver Webクライアントはシングルスレッドであり、GhostdriverはWebDriverになる機能の40%にすぎないことに注意してください。

それにもかかわらず、Ghostdriverはテストのために適切に実行され、WebDriverハブに接続するのに問題があります。

1
guillemhs

はい、ブラウザなしでテストスクリプトを実行できますが、ヘッドレスモードで実行する必要があります。

0
QAAuto