一部のブラウザー操作を自動化するためにSelenium RCを使用していますが、ブラウザーを非表示にしたいです。これは可能ですか?どうやって?セレングリッドについてはどうですか?Selenium RCウィンドウも非表示にできますか?
一部のブラウザー操作を自動化するためにSelenium RCを使用していますが、ブラウザーを非表示にしたいです。これは可能ですか?どうやって?セレングリッドについてはどうですか?Selenium RCウィンドウも非表示にできますか?
回答:
いくつかのオプションがあります:
Selenium Gridを使用して、完全に異なるマシン(または仮想マシン)でブラウザーを開き、ブラウザーを表示したい場合はVNCまたはリモートデスクトップ接続を介して接続できます。また、別のオプション:リモートサーバーでJenkinsフォアグラウンドプロセスを実行すると、デスクトップでテストプロジェクトを実行できます。
LinuxではXVFBでSeleniumを「ヘッドレス」で実行できます。私はこれをやろうとしたことがなく、努力する価値があるとは思いません。http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
Selenium RCをWindowsサービスでラップできます。http://support.microsoft.com/kb/137890。それより後のバージョンのウィンドウのアクセス許可の制約により、Seleniumは、Windows 2000のようにデスクトップにアクセスできなくなります。
別のオプションは、「実際の」ブラウザを起動しないWebDriver HTMLUnitDriverのようなものを使用することです。http://code.google.com/p/webdriver/ 。また、PhantomJSオプションと、使用できる「ヘッドレスChrome」もあります。
もちろん、クラウドでテストを実行できるSauceLabsなどのサービスを使用するオプションもあります。テストが完了したら、実行中のビデオを見ることができます。
Linuxでは、ヘッドレス(仮想)ディスプレイでWebDriverを実行して、ブラウザーを非表示にすることができます。これはXvfb(X仮想フレームバッファー)で実行できます。
次を使用して、PythonコードからXvfbを直接制御できますxvfbwrapper
:https :
//github.com/cgoldberg/xvfbwrapper
ヘッドレスで実行するためのPythonコードは次のようになります。
from selenium import webdriver
from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')
print(driver.title)
driver.quit()
display.stop()
Debian / Ubuntuに依存関係をインストールします。
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
ブラウザウィンドウを簡単に非表示にできました。
ただ、PhantomJSをインストールします。次に、次の行を変更します。
driver = webdriver.Firefox()
に:
driver = webdriver.PhantomJS()
コードの残りの部分を変更する必要はなく、ブラウザーは開きません。デバッグの目的driver.save_screenshot('screen.png')
で、コードのさまざまなステップで使用します。
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
WindowsサービスとしてのSelenium RCの+1。
テストを完全に非表示で実行する場合、Windowsを使用している場合、解決策は多くないと思います。
LAN内のコンピューターを常時オンラインにして、Selenium RCサーバーを実行するために私が行うことは何ですか。したがって、テストを実行するには、localhostではなくそのコンピューターのIPを使用します。例えば:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(それがサーバーを実行しているコンピューターのIPであることを考慮してください)。
そのセットアップが完了したら、コンピューターでテストを実行します。ブラウザーとRCサーバーウィンドウは別のコンピューターにあり、完了したら元のコンピューターに戻ります。
Linuxでは、仮想ディスプレイ上でテストブラウザーを実行できます。xvfb
仮想Xサーバーを作成するためのパッケージが必要です。Debianベースのディストリビューションでは、単に実行します
sudo apt-get install xvfb
ephemeral-x.sh
仮想ディスプレイで実行するコマンドを簡単に設定できる便利なツールがあります。それをダウンロードして実行可能にします。
wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh
次に、それを使用してSeleniumサーバーを起動します。
./ephemeral-x.sh java -jar selenium-standalone.jar
Seleniumによって作成されたすべてのブラウザーウィンドウは仮想ディスプレイを使用し、ユーザーからは見えなくなります。
これは、Linuxデスクトップ(Ubuntu)でMavenを使用してテストを実行する方法です。いつもフォーカスしているFirefoxのWebドライバーで作業できないことにうんざりしました。
xvfbをインストールしました
xvfb-run -a mvn clean install
それでおしまい
呼ばれるPhantomJS関連のプロジェクトがありGhostDriver webdriverをワイヤーJSONプロトコルを使用してセレングリッド内PhantomJSのインスタンスを実行するためのものです。それはおそらくあなたが探しているものですが、この質問は現在4歳です。
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand
ちなみに、これはe2eを実行しているすべての開発者が論理的にブラウザーを起動するために必要な機能です。開発環境では、ポップアップし続け、誤って操作してテストを失敗させる可能性があるウィンドウを処理するのは面倒です。