Firefox 在驱动程序最后一个窗口关闭时崩溃
Posted
技术标签:
【中文标题】Firefox 在驱动程序最后一个窗口关闭时崩溃【英文标题】:Firefox crashes on driver last window close 【发布时间】:2017-12-15 02:35:26 【问题描述】:我有一个项目,有时使用多个 FF 窗口,有时使用多个 FF 驱动程序。 在初始化期间,我创建了一个自定义 FirefoxProfile(或从 Selenium 加载默认值而不做任何更改),将其添加到 DesiredCapabilities,将功能添加到 FirefoxOptions 并使用 FirefoxOptions 启动 FF。
测试用例执行良好,直到我需要关闭窗口:
driver.getWindowHandles().forEach(name -> driver.switchTo().window(name).close());
或
driver.quit();
其中任何一个通过后,FF 都会关闭并出现“Firefox 已崩溃”弹出窗口。日志中未显示异常。
如果我删除 FirefoxProfile,则不会出现崩溃弹出窗口,但需要 FirefoxProfile 才能启用 Flash 支持并执行更多操作。
使用:
硒 3.4.0 Firefox 54(32 位) Geckodriver 0.17(32 位) Windows 10 64 位 // Windows 7 64 位【问题讨论】:
我没有使用 Geckodriver(我正在使用 Selenium 2.5),但我在这里和 github 中看到了很多关于关闭浏览器的问题和错误报告。与此同时,this answer 可能会提供一个临时补丁。 @Guy - 我无法杀死 plugincontainer,因为我使用的是 Flash。如果是插件容器问题,则会显示“plugin-container.exe 已崩溃” @Hans 看起来这是一个已知的 Firefox/geckodriver 问题,有几个人面临并报告了相同的问题。尝试使用 FF v47.0.2,它对我也很好。 如果您还是要致电quit
,为什么还要花时间关闭驱动程序的所有窗口句柄?我假设如果您刚刚调用driver.quit()
,此错误仍然会发生,对吗?
@anshulGupta - 我不能使用旧版 Firefox。高层管理人员和安全人员不允许。
【参考方案1】:
驱动程序未能正确终止 Firefox 创建的子进程,如 flash。
https://github.com/mozilla/geckodriver/issues/285
为避免出现该对话框,您可以将环境变量XRE_NO_WINDOWS_CRASH_DIALOG
设置为1。
【讨论】:
这感觉更像是隐藏问题而不是修复它:) 我同意,但是如果您不愿意自己修复它,有时您必须忍受它。子进程应该在那之后退出,所以可能没什么好担心的。 但这不会禁用所有 Windows 崩溃对话框吗? 此环境变量特定于 Firefox。它不会影响其他程序。 既然这是我目前唯一的选择,我会接受这个。【参考方案2】:是的,同样的错误也发生在我身上。 我已经尝试了所有可能性,但除了降级 firefox 之外没有任何效果。
现在我有 46.01,它对我有用,没有崩溃问题。
【讨论】:
正如我的问题 cmets 中所述,我无法降级 FF。此外,这不是修复,而是一种解决方法。以上是关于Firefox 在驱动程序最后一个窗口关闭时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
firefox 如何设置关闭之后再打开都是上次浏览时未关闭的页面
在 Swift 中打开一个关闭的 NSWindow 会导致应用程序崩溃