Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何检查SeleniumWebDriver是否已退出?_Python_Selenium - Fatal编程技术网

在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
,这可能不是一个好的杀掉方法