在Python中,如何检查SeleniumWebDriver是否已退出?
以下是示例代码:在Python中,如何检查SeleniumWebDriver是否已退出?,python,selenium,Python,Selenium,以下是示例代码: from selenium import webdriver driver = webdriver.Firefox() (由于某种原因,此处的窗口关闭) 回溯(最近一次调用):文件“”,第1行,在 文件 “/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”, 第183行,在退出中 RemoteWebDriver.quit(self)文件“/usr/local/lib/
from selenium import webdriver
driver = webdriver.Firefox()
(由于某种原因,此处的窗口关闭)
回溯(最近一次调用):文件“”,第1行,在
文件
“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”,
第183行,在退出中
RemoteWebDriver.quit(self)文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,
第592行,在退出中
self.execute(Command.QUIT)文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,
第297行,执行中
self.error\u handler.check\u响应(响应)文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py”,
第194行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)selenium.common.exceptions.WebDriverException:消息:已尝试运行
不建立连接的命令
有什么方法可以检查webdriver的实例是否处于活动状态吗?您可以使用类似这样的方法来使用psutil
from selenium import webdriver
import psutil
driver = webdriver.Firefox()
driver.get("http://tarunlalwani.com")
driver_process = psutil.Process(driver.service.process.pid)
if driver_process.is_running():
print ("driver is running")
firefox_process = driver_process.children()
if firefox_process:
firefox_process = firefox_process[0]
if firefox_process.is_running():
print("Firefox is still running, we can quit")
driver.quit()
else:
print("Firefox is dead, can't quit. Let's kill the driver")
firefox_process.kill()
else:
print("driver has died")
您可以使用类似这样的东西,它使用psutil
from selenium import webdriver
import psutil
driver = webdriver.Firefox()
driver.get("http://tarunlalwani.com")
driver_process = psutil.Process(driver.service.process.pid)
if driver_process.is_running():
print ("driver is running")
firefox_process = driver_process.children()
if firefox_process:
firefox_process = firefox_process[0]
if firefox_process.is_running():
print("Firefox is still running, we can quit")
driver.quit()
else:
print("Firefox is dead, can't quit. Let's kill the driver")
firefox_process.kill()
else:
print("driver has died")
像蟒蛇一样。。。如果异常失败,请尝试退出并捕获异常
try:
driver.quit()
except WebDriverException:
pass
像蟒蛇一样。。。如果异常失败,请尝试退出并捕获异常
try:
driver.quit()
except WebDriverException:
pass
这就是我发现并喜欢的:
def setup(self):
self.wd = webdriver.Firefox()
def teardown(self):
# self.wd.service.process == None if quit already.
if self.wd.service.process != None:
self.wd.quit()
注意:如果驱动程序已经退出,driver\u process=psutil.process(driver.service.process.pid)将抛出异常。这是我发现并喜欢的:
def setup(self):
self.wd = webdriver.Firefox()
def teardown(self):
# self.wd.service.process == None if quit already.
if self.wd.service.process != None:
self.wd.quit()
注意:如果驱动程序已经退出,driver\u process=psutil.process(driver.service.process.pid)将引发异常。这是一个很好的答案,除非在服务已经停止(无论出于何种原因)并且孤立的浏览器仍在运行的情况下,它将无法关闭浏览器。@CoreyGoldberg,你是说壁虎河本身就死了?只有在驱动程序创建后立即捕获PID,并且如果无法捕获相同的PID,则无论如何都不必杀死它,这样做才有效。唯一的其他选择是杀死所有
firefox.exe
,这可能不是一个好办法。这是一个很好的答案,除非在服务已经死亡(无论出于何种原因)并且它让孤立的浏览器运行的情况下,它将无法关闭浏览器。@CoreyGoldberg,你的意思是geckodriver本身死亡了吗?只有在驱动程序创建后立即捕获PID,并且如果无法捕获相同的PID,则无论如何都不必杀死它,这样做才有效。唯一的其他选择是杀掉所有的firefox.exe
,这可能不是一个好的杀掉方法