Seleniumを介してHeadless Firefoxを実行するとエラーが発生します。

Seleniumを介してHeadless Firefoxを実行するとエラーが発生します。

Selenium経由でSSH経由でリモートコンピュータ(Ubuntu 16.04を実行)でヘッドレスFirefoxを実行しようとしています。ただし、これにより、「エラー:GDK_BACKENDが利用可能なモニタと一致しません。」エラーが発生します。私のホストコンピュータはWindowsを実行します。グラフィック出力を見たくありません。セレンテストにのみ使用されます。

X仮想フレームバッファを使用して仮想ドライバとして機能します。

Xvfb :10 -screen 0 1024x768x16 &

この特別なケースでは、DISPLAY環境変数を値10にエクスポートしました。

私はどこで間違っていますか?

編集:xvbfを実行した後、SSH経由でコマンドラインで「sudo firefox」を実行してもエラーは発生しません。このエラーは、セレンを介してFirefoxを実行している場合にのみ発生します。

詳細は:-

Selenium経由でFirefoxを呼び出しています。セレンスタンドアロンサーバーで提供される正確なエラーは次のとおりです。

17:52:55.218 INFO - Executing: [new session: Capabilities     [{browserName=firefox, platform=ANY,     firefox_profile=UEsDBBQAAAAAAJuOD0nf9RXUMgAAA...}]])
17:52:55.230 INFO - Creating a new session for Capabilities   [{browserName=firefox, platform=ANY, firefox_profile=UEsDBBQAAAAAAJuOD0nf9RXUMgAAA...}]
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host     127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: GDK_BACKEND does not match available displays

答え1

明らかに、これはFirefox 48とSeleniumの間の非互換性によるものです(Selenium拡張はFirefox 48では署名されず、Firefox 48は署名された拡張のみを実行します)。マイユースケースはブラウザに限定されないため、Chromeのみを使用しています。

答え2

私はFirefoxを使ってこの問題を解決しました。ステップは次のとおりです。

  1. Firefoxを49.0から46.0にダウングレード
  2. コマンドによるXVFBのインストールsudo apt-get install xvfb
  3. 次のコマンドを使用して Selenium を実行します。xvfb-run java8 -jar selenium-project.jar

私のSeleniumバージョンは2.53.1Ubuntu 14.04です。

答え3

DISPLAYなぜenv変数メソッドが機能しないのかわかりませんが、xvfb-run <command>(私の場合はxvfb-run npm test)それを使用するように切り替えましたが、うまく機能します! :)

答え4

私はすでにここに答えました。 https://stackoverflow.com/questions/50250580/error-gdk-backend-does- croを使用してセレンを実行する一致はありません。

関連情報