Python Selenium在浏览器关闭时检测

问题描述 投票:2回答:1

现在,我使用它作为检测用户何时关闭浏览器的方法:

while True:
    try:
        # do stuff
    except WebDriverException:
        print 'User closed the browser'
        exit()

但我发现它是非常不可靠的并且是一个非常糟糕的解决方案,因为WebDriverException捕获了很多异常(如果不是全部),并且大多数不是由于用户关闭浏览器。

我的问题是:如何检测用户何时关闭浏览器?

python selenium selenium-webdriver exit
1个回答
1
投票

我建议使用:

>>> driver.get_log('driver')
[{'level': 'WARNING', 'message': 'Unable to evaluate script: disconnected: not connected to DevTools\n', 'timestamp': 1535095164185}]

因为只要用户关闭浏览器窗口,驱动程序就会记录这个,这似乎是最pythonic的解决方案

所以你可以这样做:

DISCONNECTED_MSG = 'Unable to evaluate script: disconnected: not connected to DevTools\n'

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。

© www.soinside.com 2019 - 2024. All rights reserved.