我使用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);它在我的机器(以及其他开发人员的机器)上工作得很好,无论是“无头的”还是正常的。现在,我试图在容器中使用CI构建来运行Selenium测试。当我试图按原样运行它时,我遇到了一个错误:
运行命令:"/usr/bin/firefox“"-marionette”--无头"-foreground“--没有远程的"-profile”/tmp/生锈_mozprofile.pW1sbkcv98QN“错误: GDK_BACKEND不匹配可用的显示。
然后,我从dbus安装了所有建议的工具(xvfb和这个职位 ),并在运行测试之前启动了它:
apk add xvfb dbus
dbus-uuidgen > /etc/machine-id
export DISPLAY=:99
Xvfb $DISPLAY -ac &
mvn verify但是现在硒测试已经持续了大约10秒,并且失败了。
1565433736375 mozrunner::Running运行命令:"/usr/bin/firefox“"-marionette”- "-foreground“-非远程"-profile”/tmp/生锈_mozprofile.1ZMsJ0Hy95V0“1565433738424 Marionette INFO侦听端口2828” !!!子错误:(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 !!!子错误:(msgtype=0x3E0003,name=PCompositable::Msg_Destroy)信道错误:无法发送/恢复
在这里,我似乎做错了什么,在容器中运行无头硒测试的正确方法是什么?我更愿意配置现有的Docker映像,而不是使用Selenium映像,因为迁移将非常昂贵。
更新:
Selenium版本是3.141.59
壁虎驱动程序版本是v0.24.0-linux64
火狐-ESR版本是:52.8.1-r0
Update2:
xvfb、dbus和导出的DISPLAY实际上并不需要在无头模式下运行火狐-只要运行firefox --headless就行了。
发布于 2019-08-10 21:03:48
按照Mozilla --在Firefox52-esr.Headless标志中不受支持,在版本55 (用于Linux)和56 (Mac/Windows)中引入了无头标志。请试用最新的Firefox ESR版本。
https://stackoverflow.com/questions/57441584
复制相似问题