Python Selenium在浏览器关闭时检测
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Selenium在浏览器关闭时检测相关的知识,希望对你有一定的参考价值。
现在,我使用它作为检测用户何时关闭浏览器的方法:
while True:
try:
# do stuff
except WebDriverException:
print 'User closed the browser'
exit()
但我发现它是非常不可靠的并且是一个非常糟糕的解决方案,因为WebDriverException
捕获了很多异常(如果不是全部),并且大多数不是由于用户关闭浏览器。
我的问题是:如何检测用户何时关闭浏览器?
答案
我建议使用:
>>> driver.get_log('driver')
[{'level': 'WARNING', 'message': 'Unable to evaluate script: disconnected: not connected to DevTools
', 'timestamp': 1535095164185}]
因为只要用户关闭浏览器窗口,驱动程序就会记录这个,这似乎是最pythonic的解决方案
所以你可以这样做:
DISCONNECTED_MSG = 'Unable to evaluate script: disconnected: not connected to DevTools
'
while True:
if driver.get_log('driver')[-1]['message'] == DISCONNECTED_MSG:
print 'Browser window closed by user'
time.sleep(1)
如果您有兴趣,可以找到文档here。
我正在使用chromedriver 2.41和Chrome 68。
以上是关于Python Selenium在浏览器关闭时检测的主要内容,如果未能解决你的问题,请参考以下文章
Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器
Python+Selenium自动化测试框架-打开和关闭浏览器(Firefox/IE/Chrome)
selenium.common.exceptions.InvalidSessionIdException通过Python在无头模式下使用GeckoDriver Selenium Firefox(示例代