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

Firefox headless在headless redhat linux机器上崩溃

张绍晖
2023-03-14

我正在尝试使用firefox headless在headless redhat linux构建机器上运行selenium测试。我创建驱动程序的方法如下所示:

private static WebDriver createFireFoxDriver() {
    WebDriverManager.firefoxdriver()
            .setup();

    FirefoxOptions options = new FirefoxOptions();
    options.setHeadless(true);
    options.addPreference("browser.download.folderList", 2);
    options.addPreference("browser.download.dir", ABSOLUTE_PATH_TO_FOLDER);
    options.addPreference("browser.download.manager.showWhenStarting", false);
    options.addPreference("browser.helperApps.neverAsk.saveToDisk", "application/json");

    return new FirefoxDriver(options);
}

我在日志文件中看到的错误如下所示:

[Parent 65433, Gecko_IOThread] WARNING: pipe error (82): Connection reset by peer: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 358
[Parent 65433, Gecko_IOThread] WARNING: pipe error: Broken pipe: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727

###!!! [Parent][MessageChannel] Error: (msgtype=0x1E0074,name=PBrowser::Msg_StopIMEStateManagement) Channel error: cannot send/recv


###!!! [Parent][MessageChannel] Error: (msgtype=0x1E008F,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv

1579539977190   Marionette  TRACE   [11] Frame script loaded
1579539977191   Marionette  TRACE   [11] Frame script registered
A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down

我已经检查了机器上是否安装了gtk、glib、pango、xorg和libstdc的正确版本。以前有人在使用无头制造机时遇到过这个问题吗?

Firefox版本:68.4.1|Selenium版本:3.141.59|GeckDrive版本:0.26.0

深入研究导致坠机的测试。就在崩溃发生之前,测试正在单击SwaggerUI的API try功能。网站上没有其他行动导致此次崩溃。

共有2个答案

宿楚青
2023-03-14

关于给定Geckodriver版本支持哪些Firefox浏览器版本的讨论,我没有看到您使用的二进制文件中有任何版本不匹配?。

唯一的嫌疑犯是FirefoxOptions类的setHeadless()方法,根据文档如下:

setHeadless(boolean headless)

因此,有效地,您的代码块将:

FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true)

另外的关键:

  • 浏览器。下载文件夹列表
  • 浏览器。下载目录
  • 浏览器。下载经理开始时显示
  • 浏览器。帮手们。内韦拉斯克。saveToDisk

需要通过使用FirefoxProfile()的实例的setPre的()方法进行配置,如下所示:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", ABSOLUTE_PATH_TO_FOLDER);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/json");

你可以找到一个相关的详细讨论,关于如何使用FirefoxProfile通过Firefox浏览器自动下载?

法烨华
2023-03-14

找到了一个既有效又有效的解决方案。

在linux docker容器中运行firefox时,/dev/shm必须至少有2gb。我的生成计算机配置不符合此要求。将内存量增加到2gb以上立即解决了我的问题。

这种行为的原因是Firefox使用POSIX共享内存,而Linux上的POSIX共享内存(根据shm_open(3)手册)基于tmpfs(预计将安装在/dev/shm上)。打开的共享内存对象/接口可以与ipcslsof实用程序一起列出。

 类似资料:
  • 问题内容: 我有以下代码: 在模拟器中工作正常。但是当我在手机上尝试时,它崩溃了。这是控制台: 这行: NSNumberFormatter()。numberFromString(display.text!)! 返回nil,这导致应用程序崩溃,导致无法打开可选包装。我真的不知道怎么了 我正在关注iTunes U中的一些教程。 任何帮助,将不胜感激。 问题答案: 尝试: 因为默认情况下使用设备区域设置

  • 第一个屏幕上传权和工作正常(Toast和所有其他设置和参数),直到我尝试保存结果并通过相同的按钮打开新屏幕。按下按钮会使我手机中的应用程序崩溃,而不会打开第二个屏幕。然而,在模拟器中,一切正常。 这是主要的活动: 这是相关的XML: 这是第二个活动: 这是第二个XML: 这是日志猫错误: 致命异常:主< br >进程:com . example . rach mani . mythematix _

  • 我想在地图上画一条折线 进口com.google.android.gms.maps.model.Polyline;进口com.google.android.gms.maps.model.PolylineOptions; 导入java.util。ArrayList;导入java.util.List; 公共类 MainActivity extends AppCompatActivity 实现了 OnM

  • 我的MapActive在低API手机上崩溃了。在我的LG G4上没有崩溃。为什么会这样? 这是我的代码: 日志中的错误显示: 致命异常:主进程:com.giladneiger.clubber,PID:22389java.lang.运行时异常:无法启动活动组件信息{com.giladneiger.clubber/com.giladneiger.clubber.MapsActivity}:java.l

  • 我们正在调查另一个团队开发的一个应用程序,该应用程序在Android上与HereMaps(此处为SDK导航版,)相关的本机崩溃,其stacktrace如下: 编辑: 在代码中进行了一些重构和清理操作之后,我们已经达到了一个干净的状态,在这个状态下,我们确信没有任何泄漏;我们已经用LeakCanary调查并移除了所有这些,但本地崩溃仍然存在。 因此,我们试图回到basis,从github克隆了HER

  • 问题内容: 当使用Lucene为文档建立索引时,我的JVM(1.6.0_29)在频繁使用时始终崩溃。我得到: 环境: JDK:1.6u29(与1.6_02相同的问题)Lucene版本3.4.0 vm_info:适用于linux-amd64 JRE(1.6.0_29-b11)的Java HotSpot(TM)64位服务器VM(20.4-b02),由“ java_re”于gcc 3.2.2于2011年