通过 Selenium 执行 Headless Firefox 时出错

通过 Selenium 执行 Headless 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

答案1

显然这是由于 Firefox 48 和 Selenium 之间不兼容造成的(selenium 扩展在 Firefox 48 中未签名,而 Firefox 48 只运行签名的扩展)。我只使用 Chrome,因为我的用例并不是特定于浏览器的。

答案2

我用 Firefox 解决了这个问题。步骤是:

  1. 将 Firefox 从 49.0 降级至 46.0
  2. 通过命令安装XVFBsudo apt-get install xvfb
  3. 使用命令运行 Seleniumxvfb-run java8 -jar selenium-project.jar

我的 Selenium 版本是2.53.1Ubuntu 14.04。

答案3

我不知道为什么DISPLAYenv 变量方法不起作用,但我转而使用xvfb-run <command>(在我的例子中xvfb-run npm test)并且效果很好! :)

答案4

我已经在这里回答了 https://stackoverflow.com/questions/50250580/error-gdk-backend-does- 不匹配可用显示运行硒使用 cro

相关内容