web-dev-qa-db-ja.com

Seleniumを介してヘッドレスFirefoxを実行するとエラーが発生する

SSH経由でSeleniumを介してリモートマシン(Ubuntu 16.04を実行)でヘッドレスFirefoxを実行しようとしています。ただし、これにより「エラー:GDK_BACKENDが使用可能なディスプレイと一致しません」というエラーが発生します。私のホストマシンはWindowsを実行しています。グラフィカルな出力を見たくありません。 Seleniumのテストに使用されているだけです。

私はダミーのドライバーとして機能するX仮想フレームバッファーを使用しています。

Xvfb :10 -screen 0 1024x768x16 &

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

どこがいけないの?

編集:xvbfを実行した後、SSHを介してコマンドラインで「Sudo firefox」を単に実行すると、エラーがスローされません。エラーは、FirefoxをSeleniumで実行しているときにのみスローされます。

詳細:-

私はSelenium経由でFirefoxを呼び出しています。 Seleniumスタンドアロンサーバーが与える正確なエラーは次のとおりです。

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
7
goluhaque

どうやらこれは、Firefox 48とSeleniumの間に互換性がないために発生します(selenium拡張機能は、firefox 48では署名されておらず、firefox 48は署名された拡張機能のみを実行します)。私の使用例はブラウザ固有のものではないため、私はChromeを使用しました。

2
goluhaque

この問題をFirefoxで解決しました。手順は次のとおりです。

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

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

2
Shams

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

0
mltsy

私はここで答えました https://stackoverflow.com/questions/50250580/error-gdk-backend-does- not-match-available-displays-running-Selenium-using-cro

0