AWS EC2 インスタンスで Selenium を実行中に例外が発生する

AWS EC2 インスタンスで Selenium を実行中に例外が発生する

ヘッドレスサーバーであるAWS EC2インスタンスでFirefoxドライバーを使用してSeleniumテストケースを実行すると、この例外が発生します。Firefoxをインストールし、必要な変更をすべて行いました。

org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: ポート 7055 のバイナリ FirefoxBinary(/opt/firefox/firefox-bin) への接続に失敗しました。プロセス出力は次のとおりです: �*** e = [例外... "コンポーネントがエラー コードを返しました: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)" 場所: "JS フレーム :: chrome://browser/content/utilityOverlay.js :: getShellService :: 行 339" データ: なし]

この例外について誰か助けてくれませんか?

答え1

まず、xvfb をインストールして、「仮想画面」で実行できるようにします。

sudo yum -y install xorg-x11-server-Xvfb 

次に、Amazon EC2にFirefoxをインストールするのに役立つこの役立つ投稿を確認してください。これは、EC2でsudo yum install firefoxを実行するだけでは不十分なためです。つまり、基本的にファイルを作成します(私はこれを使用しました要旨) を EC2 インスタンスにダウンロードし、それを実行して Firefox とその依存関係をすべてインストールします。 http://joekiller.com/2012/06/03/install-firefox-on-amazon-linux-x86_64-compiling-gtk/

スクリプトを実行するとFirefoxがインストールされます

/usr/local/bin/firefox

デフォルトではそうだと思います。

インストールが完了したら、上記のリンクでも説明されているように、パスに追加する必要があります。ただし、DISPLAY システム変数も追加する必要があるため、次のようにします...

cat << EOF >> ~/.bashrc
PATH=/usr/local/bin:\$PATH
DISPLAY=:99
export PATH
export DISPLAY
EOF

次に、画面 99 の xvfb を起動して、その「仮想画面」で Firefox を実行できるようにする必要があります。次のようになります...

Xvfb :99 -screen 0 1024x768x16 &

その後、Selenium テストを再実行すると、パス上で Firefox が検出され、その EC2 インスタンス上の正しい「仮想化された」画面で実行されるはずです。

余談ですが、私は Amazon Linux に関して決して専門家ではないので... 頑張ってください。

あるいは、Amazon EC2 Ubuntu マイクロインスタンスで起動できる Selenium サーバーに対して実行することを検討することもできます。これにより、GUI を簡単に設定できます。

答え2

ポート 7055 のバイナリ FirefoxBinary(/opt/firefox/firefox-bin) への接続に失敗しました

新しいバージョンの Firefox をサポートできるように、Selenium Server を (2.53.x に) アップグレードする必要があります。または、別の Web ドライバー (Chrome など) を使用してください。

Maven を使用している場合は、次の行を使用しますpom.xml

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>2.53.1</version>
  <scope>test</scope>
</dependency>

見る:

関連情報