下面是示例代码:
from selenium import webdriver
driver = webdriver.Firefox()
(The窗口由于某种原因关闭)
driver.quit()
Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 183, in quit RemoteWebDriver.quit(self) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 592, in quit self.execute(Command.QUIT) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 297, in execute self.error_handler.check_response(response) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: Tried to run command without establishing a connection
- 是否有某种方法可以检查webdriver示例是否处于活动状态?**
5条答案
按热度按时间vu8f3i0k1#
是Python的...尝试退出并在失败时捕获异常。
u91tlkcl2#
您可以使用类似于psutil的代码
hgqdbh6s3#
这是我想出来并喜欢的:
注意:如果驱动程序已经退出,
driver_process=psutil.Process(driver.service.process.pid)
将抛出异常。hgb9j2n64#
Corey Golberg的答案是正确的方式。
但是,如果您真的需要深入了解,
driver.service.process
属性可以访问管理打开的浏览器的底层Popen对象,如果进程已经退出,process
属性将为None
,测试它是否真实将确定浏览器的状态:pcrecxhr5#
除了Corey Goldberg's answer,和scign's answer之外:
不要忘记导入:
此外,在Corey的回答中,代码将挂起大约10秒,同时试图关闭一个已经关闭的webdriver,然后再移动到except子句。