关闭浏览器时,Python Selenium Detect

Pro*_*ner 6 python selenium exit selenium-webdriver

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

while True:
    try:
        # do stuff
    except WebDriverException:
        print 'User closed the browser'
        exit()
Run Code Online (Sandbox Code Playgroud)

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

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

Fed*_*bbi 7

我建议使用:

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

因为每当用户关闭浏览器窗口时驱动程序都会记录此信息,这似乎是最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)
Run Code Online (Sandbox Code Playgroud)

如果您有兴趣,可以在此处找到文档。

我使用的是 chromedriver 2.41 和 Chrome 68。