一部のブラウザー操作を自動化するために Selenium RC を使用していますが、ブラウザーを非表示にしたいと考えています。これは可能ですか?どのように?セレングリッドはどうですか?Selenium RC ウィンドウも非表示にできますか?
12 に答える
Linux では、ヘッドレス (仮想) ディスプレイで WebDriver を実行して、ブラウザーを非表示にすることができます。これは、Xvfb (X 仮想フレームバッファー) で実行できます。
https://github.com/cgoldberg/xvfbwrapperを使用して、Python コードから Xvfb を直接制御でき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')
、コードのさまざまなステップで使用します。
WindowsサービスとしてのSeleniumRCの場合は+1。
テストを完全に非表示にして実行するために、Windowsを使用している場合、解決策はあまりないと思います。
LAN内のコンピューターを常にオンラインにし、SeleniumRCサーバーを実行するために専用にします。したがって、ローカルホストの代わりにそのコンピューターの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 によって作成されたすべてのブラウザー ウィンドウは、仮想ディスプレイを使用するようになり、非表示になります。
Windows を使用している場合、1 つのオプションは、別のユーザー アカウントでテストを実行することです。これは、ブラウザと Java サーバーが自分のアカウントから見えなくなることを意味します。
これは、Linux デスクトップ (Ubuntu) で maven を使用してテストを実行する方法です。私は、Firefox の Web ドライバーが常にフォーカスされている状態で作業できないことにうんざりしていました。
xvfbをインストールしました
xvfb-run -a mvn クリーン インストール
それでおしまい
MacOSX では、ブラウザー ウィンドウを非表示にすることはできませんでしたが、少なくとも別のディスプレイに移動する方法を見つけたので、ワークフローがそれほど混乱することはありません。Firefox がテストを実行している間、ドックでそのアイコンをコントロールクリックし、[オプション] を選択して、[ディスプレイ 2 に割り当て] を選択します。