我正在尝试通过 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
答案1
显然这是由于 Firefox 48 和 Selenium 之间不兼容造成的(selenium 扩展在 Firefox 48 中未签名,而 Firefox 48 只运行签名的扩展)。我只使用 Chrome,因为我的用例并不是特定于浏览器的。
答案2
我用 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。
答案3
我不知道为什么DISPLAY
env 变量方法不起作用,但我转而使用xvfb-run <command>
(在我的例子中xvfb-run npm test
)并且效果很好! :)
答案4
我已经在这里回答了 https://stackoverflow.com/questions/50250580/error-gdk-backend-does- 不匹配可用显示运行硒使用 cro