Mozilla FireFox(无响应)-Selenium WebDriver拒绝通过driver.quit()命令死亡

我的程序并行启动数十个WebDriver实例,并在满足某些条件或手动终止该程序时将其杀死。在任何给定时间,我可能有4打活动的WebDriver实例,并杀死我打电话给的不需要的实例:

driver.quit();

如果driver.quit();抛出异常,我将通过WebDriver命令用PID杀死Runtime.getRuntime().exec() taskkill

大多数活动驱动程序都通过此调用销毁(退出程序时)。但是,通常只有极少数(1-3)与消息Mozilla FireFox (Not Responding)一起“挂起”。他们永远不会死。

由于我用来杀死WebDriver的命令通常可以正常工作,因此我无法确定问题的根本原因。我已经查看了关于类似问题的SO上的多个线程,但是我觉得它们都没有解决我的问题的原因,因为如上所述,我使用的命令通常都可以工作-并非在所有实例上都有效。据我所知,任何驱动程序的操作方式都没有区别。另外,当我调用driver.quit()时,不会引发任何错误/异常。因此,当该命令有效和无效时,它似乎纯粹是随机的。

是什么原因导致Firefox像这样挂起而无法响应quit()命令?

谢谢!

rustybash 回答:Mozilla FireFox(无响应)-Selenium WebDriver拒绝通过driver.quit()命令死亡

您处在正确的轨道上,但在满足某些条件时请勿手动终止程序,请使用:

driver.quit();
  

您可以在PhantomJS web driver stays in memory

中找到详细的讨论

万一您需要强行杀死 Firefox 进程,还可以通过 taskkill() 使用getRuntime().exec()(windows)命令,如下所示:

Runtime.getRuntime().exec("taskkill /F /IM firefox.exe /T");
  

您可以在Selenium : How to stop geckodriver process impacting PC memory,without calling driver.quit()?

中找到详细的讨论

如果 Mozilla FireFox 挂起并显示消息 Mozilla FireFox (Not Responding) ,则表示某事物已停止 Mozilla FireFox >流程。


解决方案

根据文章Firefox is not responding,有多种方法可以解决此问题(Windows 10),如下所示:

  • 关闭 Mozilla FireFox (如果经典方法无效,请通过任务管理器关闭程序)
  • 重新启动您的系统。
  • 更新系统图形卡驱动程序:由于图形卡驱动程序过时,Firefox可能会出现问题。您需要确保您的系统在最新的驱动程序更新上运行。
  • 从Firefox禁用硬件加速:硬件加速功能也与图形卡有关。在某些情况下,取决于某些图形卡的设置,使用硬件加速时,Firefox可能会陷入死机。因此,请关闭此功能。
本文链接:https://www.f2er.com/3169078.html

大家都在问