4

Firefoxエンジンを使用するJavaのSelenium2を使用してテストユニットを開発しました。

デプロイマシンにはディスプレイがないため、Xvfbを使用して作成しています。残念ながら、それは私に.を使用してJavaを開始することを強制しDISPLAY=:0 java -jar xxx.jarます。セレンjavadocを検索し、いくつかのソースを検索しましたが、JavaがFirefoxを起動するために使用するメソッドが見つかりません。魔女が私の目標であり、同じメソッドを使用してjavaをfirefoxで起動しDISPLAY=:0 firefox ...ます。

簡単に言うと、やらなければならないのですが、代わりにDISPLAY=:0 java -jar xxx.jarJavaでやらせたいので、複数のディスプレイを使用することもできます。DISPLAY=:XX firefox ...firefox ...

何かアドバイス?

4

4 に答える 4

5

実際には、XvfbとSeleniumを本番環境で使用しており、継続的に動作する多数のFirefoxインスタンスを使用しています。xvfb-run java -jar xxx.jarこのプログラムのすべてのFirefoxインスタンスを実行するために、無料のディスプレイを選択するものを使用します。スクリーンショットが気になる場合は、1つのディスプレイしか使用できず、同時に12台のFirefoxでさまざまなWebサイトのスクリーンショットを撮ることができます。

これをシェルスクリプトでラップしましたが、これは透過的です。

各セレンサーバーにその表示を本当に表示させたい場合は、構成で指定されたブラウザー文字列で上書きできます。実行するシェルスクリプトを作成し、xvfb-run /usr/bin/firefoxこのスクリプトを構成に渡すだけです。それはトリックを行う必要があります

良いテストをする

于 2012-06-15T12:53:29.780 に答える
2

表示を設定してFirefoxを起動するbashファイルを作成しました。の名前firefoxでパスに配置したので、seleniumはwhich firefoxバイナリを見つけるためにそれを使用して検出します。

于 2012-06-12T07:29:32.720 に答える
2

必要なパラメータを使用してシェルを実行する「プロキシ」プログラムを作成します。次に、プロキシプログラムで「webdriver.firefox.bin」プロパティを指定します。これはjavaコマンドを介して実行されるため、Javaプログラムにはなり得ないと思います。おそらくネイティブコードである必要があり、おそらくCであり、「system( "DISPLAY =:XX firefox ...");」のようなものである必要があります。

于 2012-06-13T11:18:30.493 に答える
0

あなたはこのマニュアルを調べるべきです、私はこれを少し前に使ってほぼ同じことをしました:

http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

TLDR;

$ export DISPLAY=:0
$ firefox
于 2012-05-29T14:42:14.507 に答える