実稼働サーバーをUbuntu -desktop 10.04からUbuntu -server 12.04にアップグレードすることを検討しています。
Selenium Web Driverなど、現在のデスクトップOSでさまざまなサービスを実行しています。私の質問は、CLIベースのシステムからSelenium Web Driverを実行できますか?
私の当面の考えは、Firefoxに依存しているため不可能だと思いますが、誰かが間違っていることを証明してもらいたいのです!
探しているのは 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
ブラウザウィンドウを簡単に非表示にできました。
ただ PhantomJSをインストール 。次に、この行を変更します。
driver = webdriver.Firefox()
に:
driver = webdriver.PhantomJS()
コードの残りの部分を変更する必要はなく、ブラウザは開きません。デバッグのために、コードのさまざまなステップでdriver.save_screenshot('screen.png')
を使用するか、開発中にFirefox Webドライバーを使用し続けます。
ヘッドレスブラウザのサポートが必要な場合は、別のアプローチを採用できます。
https://github.com/detro/ghostdriver
Selenium Conferenceで発表され、現在も開発中です。 PhantomJSをブラウザーとして使用し、HTMLUnitDriverよりもはるかに優れています。スクリーンショットはまだありませんが、まだ活発に開発されています。
はい。 Webドライバーの起動中にHTMLUnitDriver
の代わりにFirefoxDriver
を使用できます。これは、ヘッドレスブラウザーのセットアップです。詳細は こちら をご覧ください。
オプションは、次のように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が発生しました。ただし、デスクトップ環境ではすべて問題ありません。
更新:ヘッドレスFirefoxを実行するためにXVFBは必要なくなりました。 Linux上のFirefox v55 +およびWindows/Mac上のFirefox v56 +は、ヘッドレス実行をサポートするようになりました。
ここに使用方法のドキュメントをいくつか追加しました。
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
もう1つのオプションはGhostDriverで、これは現在WebDriverによって公式にサポートされています: Ghostdriver actual performance gain
HtmlUnitDriver Webクライアントはシングルスレッドであり、GhostdriverはWebDriverになる機能の40%にすぎないことに注意してください。
それにもかかわらず、Ghostdriverはテストのために適切に実行され、WebDriverハブに接続するのに問題があります。
はい、ブラウザなしでテストスクリプトを実行できますが、ヘッドレスモードで実行する必要があります。