【发布时间】: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 安装了所有建议的工具(dbus 和xvfb)并在运行测试之前启动它:
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:
xvfb、dbus 和导出的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