我有一个长期运行的python应用程序,它会定期(每隔30-60秒)用硒和铬驱动程序打开一个网页,运行一些JavaScript并截取屏幕截图。它在一个EC2 ubuntu实例上运行,在Xvfb中使用chrome,大多数情况下,一切正常,除了间歇性的程序会挂起。这是发生在这些线路之一:Selenium Chromedriver挂起?
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);
(我没有一个确切的线,但我从我已经把调试语句知道这是什么地方在这里之间)
不幸的是,程序不会崩溃,所以它没有任何错误信息,它只是从昨晚7点开始无休止地等待。运行strace -p 'python program pid'
回报:wait4(-1,
和运行strace -p 'chromedriver pid'
回报recvfrom(20,
我可以ps axjf
看到该进程仍在运行,它只是没有做任何事情。我有点不知所措,有什么建议?
chromedriver版本:2.10.267518
谷歌浏览器40.0.2214.111
硒(安装了PIP):2.42.1
#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()
---- ----编辑
我刚更新到ChromeDriver 2.14.313457
和Selenium 2.44.0
,希望这可以解决这个问题。我现在要离开这个。感谢迄今为止的建议家伙!
---- ----编辑
因此该服务最终仍挂。我想知道是否这是因为对于每个截图我都关闭并重新启动google-chrome?这是否可能导致内存泄漏?我怎么能诊断这个?
如果未指定铬选项,它会挂起吗?你使用哪种硒和铬版本? – alecxe 2015-02-11 20:36:03
另外,尝试添加调试日志消息并查看挂在哪条线上。另外,请说明如何启动'xvfb'。谢谢。 – alecxe 2015-02-11 20:43:00
查看我的编辑。我已经在发生这种事情的几次时间里添加了调试消息,但我想我还不够彻底。 – Trevor 2015-02-11 20:47:07