Selenium:当我启动Web驱动程序实例时,太多的Chrome进程会引发



我有一个多进程程序,可以创建新的 chrome Web 驱动程序实例,但过了一段时间,我看到 chrome 进程的数量变得非常高 (2300!!) :

opt/google/chrome/chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-infobars --disable-popup-blocking --disable-prompt-on-repost 

我试图使用以下代码退出驱动程序后杀死任何仍处于活动状态的 chrome 进程:

mydisplay = Display(visible=0, size=(1024, 768))
mydisplay.start()
mydriver = webdriver.Chrome('driver path')
PIDs = psutil.Process(mydriver.service.process.pid).children(recursive=True)
self.driver.quit()
self.display.stop()
for p in PIDs:
   try:
           p.kill()
   except:
           print 'no process to kill'

但是当它运行时,仍然会留下一些"铬"进程。 对问题的根本原因以及如何解决它有任何想法吗?

假设您使用的是 linux,您可能会遇到以下情况: Chromedriver 在尝试启动新会话时经常挂起

解决方案是向环境变量添加DBUS_SESSION_BUS_ADDRESS=/dev/null

  • export DBUS_SESSION_BUS_ADDRESS=/dev/null
  • $ DBUS_SESSION_BUS_ADDRESS=/dev/null python myscript.py

我遇到了同样的问题,解决方案是在TestCleanup上按名称杀死所有chromedriver.exe进程。由于我不习惯python,我发现这个问题可能会帮助你做到这一点。

编辑:我最近遇到了这个问题,解决方案是开始使用驱动程序。quit() 而不是驱动程序。关闭()。

而司机。Close() 将简单地关闭驱动程序(也可用于关闭选项卡),驱动程序。Quit() 将关闭浏览器并终止与该实例相关的任何进程。

最新更新