小编典典

Selenium Chromedriver挂了吗?

selenium

我有一个运行时间较长的python应用程序,它将定期(每30-60秒)打开一个包含selenium和chrome驱动程序的网页,运行一些javascript并截图。它在Xvfb中带有chrome的EC2
ubuntu实例上运行,并且在大多数情况下一切正常,除非程序会间歇性地挂起。它发生在以下行之一:

    options = Options()
    options.add_argument("--disable-web-security")
    options.add_argument("--webdriver-logfile=webdrive.log")
    dc = DesiredCapabilities.CHROME
    dc['loggingPrefs'] = {'browser': 'ALL'}
    driver = webdriver.Chrome(chrome_options=options, desired_capabilities=dc)
    driver.get(url);

(我没有确切的一行,但我从调试语句中知道,它位于此处之间的某处)

不幸的是,该程序不会崩溃,因此它没有任何错误消息,它自昨晚7pm开始无休止地等待着。运行strace -p 'python program pid'收益:wait4(-1,和运行strace -p 'chromedriver pid'收益recvfrom(20,

我可以看到ps axjf该进程仍在运行,只是什么也没做。我有点不知所措,有什么建议吗?

chromedriver版本:2.10.267518

谷歌浏览器40.0.2214.111

selenium(随pip一起安装):2.42.1

#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()

-—编辑----

我刚刚更新到ChromeDriver 2.14.313457Selenium 2.44.0,希望可以解决此问题。我现在暂时不公开。到目前为止,感谢您的建议!

-—编辑----

因此该服务仍然挂起。我想知道是否是因为我关闭并重新启动google-chrome的每个屏幕截图?这是否可能以某种方式导致内存泄漏?我该如何诊断?


阅读 297

收藏
2020-06-26

共1个答案

小编典典

我从来没有发现导致此问题的特定代码段,但是用每个驱动程序负载创建Xvfb的新实例似乎已解决了该问题。硒与Xvfb之间的交互中某处可能存在内存泄漏?无论哪种方式,都将其标记为已关闭。

2020-06-26