【问题标题】:Selenium with Firefox-ESR in Alpine Docker imageAlpine Docker 映像中带有 Firefox-ESR 的 Selenium
【发布时间】:2019-12-17 21:01:26
【问题描述】:

我正在使用 Selenium 从 Java 代码中进行测试,它使用 maven 自动启动,当我运行 mvn verify 时,它使用 gecko-driver 为 selenium 启动新的 firefox 实例:

final FirefoxOptions opts = new FirefoxOptions();
if (HEADLESS_MODE) {
  opts.addArguments(ARG_HEADLESS);
}
return new FirefoxDriver(opts);

在“无头”和正常模式下,它在我的机器(以及其他开发人员的机器)上运行良好。现在我正在尝试在 Alpine Linux Docker 容器中使用 CI 构建运行 Selenium 测试。当我尝试按原样运行它时,出现错误:

mozrunner::runner INFO 运行命令:“/usr/bin/firefox” “-marionette” “--headless” “-foreground” “-no-remote” "-profile" "/tmp/rust_mozprofile.pW1sbkcv98QN" 错误:GDK_BACKEND 与可用显示不匹配。

然后我从this post 安装了所有建议的工具(dbusxvfb)并在运行测试之前启动它:

apk add xvfb dbus
dbus-uuidgen > /etc/machine-id
export DISPLAY=:99
Xvfb $DISPLAY -ac &
mvn verify

但现在 Selenium 测试持续了大约 10 秒,并因错误而失败

1565433736375 mozrunner::runner INFO 运行命令:“/usr/bin/firefox”“-marionette”“--headless”“-foreground”“-no-remote”“-profile”“/tmp/rust_mozprofile.1ZMsJ0Hy95V0 " 1565433738424 Marionette INFO 监听 2828 端口

!!! [Child][MessageChannel] 错误:(msgtype=0x3E0003,name=PCompositable::Msg_Destroy) 频道错误:无法发送/接收

[孩子 2191] ###!!!中止:通道错误中止。:文件 /home/buildozer/aports/community/firefox-esr/src/firefox-52.8.1esr/ipc/glue/MessageChannel.cpp,第 2152 行 【孩子2191】###!!!中止:通道错误中止。:文件 /home/buildozer/aports/community/firefox-esr/src/firefox-52.8.1esr/ipc/glue/MessageChannel.cpp,第 2152 行

!!! [Child][MessageChannel] 错误:(msgtype=0x3E0003,name=PCompositable::Msg_Destroy) 频道错误:无法发送/接收

看来我在这里做错了什么,在 Alpine Linux Docker 容器中运行无头 Selenium 测试的正确方法是什么?我更喜欢配置现有的 Docker 镜像而不是使用 Selenium 镜像,因为迁移成本很高。


更新:

Selenium 版本是3.141.59
Gecko-driver 版本为v0.24.0-linux64
Firefox-ESR 版本为:52.8.1-r0


更新2:

xvfbdbus 和导出的DISPLAY 实际上不需要在无头模式下运行 Firefox - 只需运行 firefox --headless 即可。

【问题讨论】:

  • Selenium 和 Geckodriver 的版本?同时启用驱动程序日志 FirefoxOptions options = new FirefoxOptions(); options.setLogLevel(FirefoxDriverLogLevel.TRACE);在这里发帖
  • 只添加firefox 52-esr 不支持--headless标志参考bugzilla.mozilla.org/show_bug.cgi?id=1423640
  • @RahulL 谢谢,firefox-v52 是一个问题(用版本更新了问题)。它是 Alpine-3.7 的最新 Firefox-ESR 版本。更新到 Alpine-3.9 后,我能够安装 Firefox-ESR v60.9。请随时在此处发布您的答案。

标签: selenium docker firefox selenium-webdriver alpine


【解决方案1】:

根据Mozilla,Firefox 52-esr 不支持 --headless 标志。版本 55(适用于 Linux)和 56(Mac/Windows)中引入了无头标志。请尝试最新的 Firefox ESR 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2020-09-30
    • 2018-06-05
    • 2017-11-30
    • 1970-01-01
    • 2020-06-08
    • 2019-04-02
    相关资源
    最近更新 更多