当前位置: 首页 > 知识库问答 >
问题:

Alpine Docker图像中的Selenium与Firefox ESR

殳宸
2023-03-14

我正在使用Selenium从Java代码进行测试,它是用maven自动启动的,当我运行mvn verify时,它使用gecko驱动程序为Selenium启动新的firefox实例

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

它在我的机器上(和其他开发人员的机器上)在“无头”和正常两种模式下都运行良好。现在我试图运行硒测试与CI构建在阿尔卑斯LinuxDocker容器。当我试图按原样运行它时,我有一个错误:

mozrunder::转轮INFO运行命令:"/usr/bin/Firefox""-木偶""-无头"-前景"-无远程"-配置文件"/tmp/rust_mozprofile. pW1sbkcv98QN"错误:GDK_BACKEND与可用显示不匹配。

然后我从这篇文章中安装了所有建议的工具(dbusxvfb),并在运行测试之前启动了它:

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

但现在,Selenium测试已经进行了大约10秒,并因错误而失败

1565433736375 mozrunner::runner INFO Running命令:“/usr/bin/firefox”“-marionette”“-headless”“-front”“-no remote”“-profile”“/tmp/rust_mozprofile.1ZMsJ0Hy95V0”156433738424木偶信息监听端口2828

[孩子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行

似乎我在这里做错了什么,在阿尔卑斯LinuxDocker容器中运行无头硒测试的正确方法是什么?我更喜欢配置现有的Docker映像,而不是使用Selenium映像,因为迁移将是昂贵的。

更新:

Selenium版本是3.141.59
Gecko驱动程序版本是v0。24.0-linux64
Firefox ESR版本为:52.8.1-r0

更新2:

xvfbdbus和导出的DISPLAY在无头模式下运行Firefox实际上并不需要,只需运行Firefox--headless就可以了。

共有1个答案

牧甫
2023-03-14

根据Mozilla——Firefox 52 esr不支持headless标志。在55版(Linux版)和56版(Mac/Windows版)中引入了Headless flag。请试用最新的Firefox ESR版本。

 类似资料:
  • 问题内容: 我正在使用Selenium时禁用Firefox中的图像。它应该是firefox中首选项的简单更新,该文档记录在“ 在Selenium Python中禁用图像”的说明中 但是,当我运行时,会显示图像,并且当我输入about:config时,其值仍为1,而不是我尝试将其设置为2的值。 我的代码(用Python编写)是: 作为参考,此代码可以与首选项的另一个更改完美配合,例如使用line关闭

  • 问题内容: 我正在使用Selenium和Google Chrome驱动程序以编程方式打开页面。在每个页面上都有一个动态生成的图像,我想下载该图像。目前,我正在等待页面完成加载,然后获取图像URL并使用System.Net.WebClient下载。 除我要下载图像两次(在浏览器中一次,使用WebClient一次)外,一切正常。问题在于每个图像大约有15MB,并且两次下载很快就累加了。 那么-是否可以

  • 我目前正在Selenium WebDriver中工作,以便在自动化过程中比较两个图像。目前我正在使用像素比较,但问题是,如果浏览器大小改变或系统不同,我运行的自动化。 我必须比较两张图片,一张是金色的,已经保存在某个位置,另一张是在自动化过程中拍摄的屏幕截图。一旦截图被拍摄下来,它就会与我拥有的金色图像进行比较,并相应地判断通过与否。如果拍摄屏幕截图时浏览器大小或系统分辨率不同,则会出现问题,因为

  • 问题内容: 通过Selenium和c#使用图像时,如何禁用Google chrome中的图像? 我尝试了6种方法,但均无效果。 Chrome驱动程序:V2.2 Chrome版本:V29.0.1547.66 m selenium:V2.35 我所做的所有尝试都不会引起异常,它们可以正常运行,但仍显示图像: 尝试1: 尝试2: 尝试3: 尝试4: 尝试5: 尝试6: 问题答案: 使用http://ch

  • 我使用的代码: 错误: C:\Users\Dell\PycharmProjects\ATF_TestOrder\venv\Scripts\python.exe C:/Users/Dell/PycharmProjects/ATF_TestOrder/ATF_TestOrder/ATF_TestOrder.py回溯(最后一次调用):driver.switch_至_frame(“上载映像”)文件第18行

  • 我一直在尝试点击网页上的图像。此映像的Xpath为: HTML代码为: 在这里尝试了以下所有方法,但得到了相同的错误消息“无法定位元素: > .findElement(.(“.//*[@id='GridView-1018']/table//tr[3]/td[7]/div/a/img”))。单击(); WebElement temp=driver.findElement(by.xpath(“//im