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
どうやらこれは、Firefox 48とSeleniumの間に互換性がないために発生します(selenium拡張機能は、firefox 48では署名されておらず、firefox 48は署名された拡張機能のみを実行します)。私の使用例はブラウザ固有のものではないため、私はChromeを使用しました。
この問題をFirefoxで解決しました。手順は次のとおりです。
Sudo apt-get install xvfb
でXVFBをインストールしますxvfb-run Java8 -jar Selenium-project.jar
を使用してSeleniumを実行します。私のSeleniumのバージョンは2.53.1
およびUbuntu 14.04です。
DISPLAY
env変数メソッドが機能しなかった理由はわかりませんが、xvfb-run <command>
(私の場合はxvfb-run npm test
)を使用するように切り替えました。 :)
私はここで答えました https://stackoverflow.com/questions/50250580/error-gdk-backend-does- not-match-available-displays-running-Selenium-using-cro