web-dev-qa-db-ja.com

Selenium RCでブラウザーを非表示にすることはできますか?

Selenium RCを使用して一部のブラウザー操作を自動化していますが、ブラウザーを非表示にする必要があります。これは可能ですか?どうやって? Selenium Gridはどうですか? Selenium RCウィンドウも非表示にできますか?

90
Yatendra Goel

いくつかのオプションがあります。

  • Selenium Gridを使用して、ブラウザーをまったく別のマシン(または仮想マシン)で開き、ブラウザーを表示する場合はVNCまたはリモートデスクトップ接続経由で接続できます。また、別のオプション:そのリモートサーバーでJenkinsフォアグラウンドプロセスを実行すると、デスクトップでテストプロジェクトを実行できます。

  • XVFBのLinuxでSeleniumの「ヘッドレス」を実行できます。私はこれをやったことは一度もないし、本当に努力する価値があるとは思わない。 http://www.alittlemadness.com/2008/03/05/running-Selenium-headless/

  • Selenium RCをWindowsサービスでラップできます。 http://support.Microsoft.com/kb/13789 。後のバージョンのWindowsに対するアクセス許可の制約により、おそらく、Seleniumが許可していたWindows 2000のようなデスクトップへのアクセスが妨げられます。

  • 別のオプションは、WebDriver HTMLUnitDriverのようなものを使用することです。これは、「実際の」ブラウザーを起動しません。 http://code.google.com/p/webdriver/ 。また、PhantomJSオプションと、使用可能な「ヘッドレスChrome」もあります。

  • もちろん、SauceLabsのようなサービスを使用するオプションもあり、クラウドでテストを実行できます。テストが完了したら、実行中のビデオを見ることができます。

87
Dave Hunt

Linuxでは、WebDriverをヘッドレス(仮想)ディスプレイで実行して、ブラウザーを非表示にできます。これは、Xvfb(X仮想フレームバッファー)で実行できます。

Xvfbを直接Pythonコードを使用して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
57
Corey Goldberg

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

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

_driver = webdriver.Firefox()
_

に:

_driver = webdriver.PhantomJS()
_

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

21

WindowsサービスとしてのSelenium RCの場合は+1。

テストを完全に非表示にするために、Windowsを使用している場合はあまり解決策がないと思います。

LAN内のコンピューターを常にオンラインにして、Selenium RCサーバーを実行させるために何をするか。したがって、テストを実行するには、localhostの代わりにそのコンピューターのIPを使用します。例えば:

browser = Selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(サーバーを実行しているコンピューターのIPであると考えてください)。

そのように設定したら、コンピューターでテストを実行し、ブラウザーとRCサーバーウィンドウを別のコンピューターで実行し、完了したら元に戻ります。

13
Santi

Linuxでは、仮想ディスプレイでテストブラウザーを実行できます。仮想Xサーバーを作成するにはxvfbパッケージが必要です。 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によって作成されたすべてのブラウザーウィンドウは、仮想ディスプレイを使用するようになり、ユーザーには表示されなくなります。

12
pixelistik

Windowsを使用している場合、1つのオプションは別のユーザーアカウントでテストを実行するです。これは、ブラウザとJavaサーバーが自分のアカウントに表示されないことを意味します。

4
Igor Brejc

これが、Linuxデスクトップ(Ubuntu)でmavenを使用してテストを実行する方法です。常に焦点を当てているFirefox Webドライバーで作業できないことにうんざりしました。

Xvfbをインストールしました

xvfb-run -a mvn clean install

それでおしまい

3
Paul Whelan

多くの場合、PhantomJSはあなたのニーズを完全には満たしていないので、Dave Huntの回答で言及されているヘッドレスchromeオプションについて詳しく説明します。

クロム57はこの機能を開始しました。 ChromeDriverを介して--headlessフラグを渡すことで使用できます。詳細については、 この質問 の説明を参照してください。

1
Marlies

ヘッドレスChromeを使用するのが最善策です。または、サイトに直接投稿して操作することもできます。これにより、他の処理やプロセスの計算能力が大幅に節約されます。 CPUの重い要素を使用して複数のサイトで靴を検索するWebオートメーションボットを使用すると、電力を節約でき、プログラムが単純になるほど、複数のプロセスを一度に実行できるようになります。

0
LiamººT
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を実行している開発者が必要とする機能です。開発環境では、ポップアップし続けるウィンドウや、誤って対話してテストが失敗するウィンドウを処理するのは面倒です。

0
Nestor Urquiza

GhostDriver と呼ばれるPhantomJS関連プロジェクトがあります。これは、webdriver wire JSONプロトコルを使用してSelenium GridでPhantomJSインスタンスを実行することを目的としています。これはおそらくあなたが探しているものですが、この質問は現在4年目です。

0
djangofan

MacOSXでは、ブラウザウィンドウを非表示にすることはできませんでしたが、少なくとも、ワークフローをそれほど混乱させないように、別のディスプレイに移動する方法を見つけました。 Firefoxがテストを実行している間に、ドックのアイコンをControlキーを押しながらクリックして、[オプション]を選択し、[ディスプレイに割り当て] 2をクリックします。

0
chetstone