【问题标题】:Selenium: Too many Chrome processes raise when I initiate instances of web driverSelenium:当我启动 Web 驱动程序实例时,会引发太多 Chrome 进程
【发布时间】:2017-06-02 08:03:25
【问题描述】:

我有一个创建 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'

但是当它运行时,仍然会留下一些“chrome”进程。知道问题的根本原因以及如何解决它吗?

【问题讨论】:

    标签: python selenium multiprocessing


    【解决方案1】:

    假设您使用的是 linux,您可能会遇到这种情况:Chromedriver frequently hangs when attempting to start a new session

    解决方案是将DBUS_SESSION_BUS_ADDRESS=/dev/null添加到您的环境变量中:

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

    【讨论】:

      【解决方案2】:

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

      编辑:我最近遇到了这个问题,解决方案是开始使用 driver.Quit() 而不是 driver.Close()。

      虽然 driver.Close() 将简单地关闭驱动程序(也可用于关闭选项卡),但 driver.Quit() 将关闭浏览器并终止与该实例相关的所有进程。

      【讨论】:

        猜你喜欢
        • 2022-01-28
        • 1970-01-01
        • 2020-06-28
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        相关资源
        最近更新 更多