当浏览器关闭时,Python Selple会检测到

2022-09-01 00:00:00 python selenium selenium-webdriver exit

问题描述

现在,我将其用作检测用户何时关闭浏览器的一种方法:

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}]

因为每当用户关闭浏览器窗口时,驱动程序都会记录此消息,而这似乎是最典型的解决方案。

所以您可以这样做:

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。

相关文章