Ubuntu
通過 Selenium 執行無頭 Firefox 時出錯
我正在嘗試通過 Selenium 通過 SSH 在遠端機器(執行 Ubuntu 16.04)上執行 headless firefox。但是,這給了我一個“錯誤:GDK_BACKEND 與可用顯示不匹配”錯誤。我的主機執行 Windows。我不想看到圖形輸出。它只是用於硒測試。
我正在使用 X Virtual Frame Buffer 作為虛擬驅動程序:
Xvfb :10 -screen 0 1024x768x16 &
對於這種特定情況,我還導出了值為 10 的 DISPLAY 環境變數。
我哪裡錯了?
編輯:當我在執行 xvbf 後通過 SSH 在命令行中簡單地執行“sudo firefox”時,不會引發任何錯誤。只有在通過 selenium 執行 firefox 時才會引發錯誤。
更多細節:-
我通過 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 解決了這個問題。步驟是:
- 將 Firefox 從 49.0 降級到 46.0
- 通過命令安裝 XVFB
sudo apt-get install xvfb
- 使用命令執行 Selenium
xvfb-run java8 -jar selenium-project.jar
我的 Selenium 版本是
2.53.1
Ubuntu 14.04。