当前位置: 首页 > 知识库问答 >
问题:

在Python中,如何检查Selenium WebDriver是否已经退出?

黎阳冰
2023-03-14

以下是示例代码:

from selenium import webdriver

driver = webdriver.Firefox()

(由于某种原因,这里的窗户关闭了)

driver.quit()

回溯(最后一次调用):文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/firefox/webdriver.py”第183行中的“文件”,第1行。退出(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行,在execute self中。错误处理程序。检查check_response raise exception_class(message、screen、stacktrace)selenium中第194行的“响应(response)文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/remote/errorhandler.py”。常见的例外。WebDriverException:消息:试图在不建立连接的情况下运行命令

有没有办法检查webdriver的实例是否处于活动状态?

共有3个答案

张智
2023-03-14

这就是我发现并喜欢的:

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()

注意:驱动程序\u进程=psutil。如果驱动程序已经退出,进程(driver.service.Process.pid)将抛出异常。

尉迟彬
2023-03-14

尝试退出并抓住异常,如果它失败。

try:
    driver.quit()
except WebDriverException:
    pass
包阳成
2023-03-14

您可以使用类似的东西,它使用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")
 类似资料:
  • 问题内容: 我想控制是否退出,但是找不到解决方法。 我还探讨了的属性,但是找不到任何特定的方法来获取有关驱动程序状态的信息。还要检查会话ID: 问题答案: 如果您探索python- selenium驱动程序的源代码,则将看到firefox驱动程序的方法在做什么: 您可以在此处依赖某些内容:检查是否存在或检查状态。它可以工作,但是您还可以看到只有“外部调用”,并且 在python端没有任何改变 可以

  • 问题内容: 我正在使用线程和队列模块在Python中编写一个简单的搜寻器。我获取一个页面,检查链接并将它们放入队列中,当某个线程完成页面处理后,它将从队列中获取下一个页面。我对已经访问过的页面使用数组,以过滤添加到队列的链接,但是如果有多个线程并且它们在不同页面上获得相同的链接,则会将重复的链接放入队列。那么,如何确定队列中是否已经有一些url以避免再次放置? 问题答案: 如果您不关心项目的处理顺

  • 问题内容: 我有一个名为Person的表,一个名为ID的列,如何检查ID是否已经是FOREIGN KEY,原因是我想使用以下代码进行修改: 但是如果ID已经是FOREIGN KEY,则由于有两个级联的情况,它给我以下错误“可能导致循环或多个级联路径” …如何检查此字段是否为FOREIGN KEY以避免此错误? 问题答案: 您想看一下视图 虽然还不如应有的完整。这是您想要的最终查询: 浏览此处获取更

  • 我是Spring的新人&尝试通过创建小项目来增强我的技能。在我的新应用程序中,我想对accountNumber进行唯一性检查,不幸的是我没有成功。我想应用isPresent()方法,但当我调用它时,它并不存在。如果我得到帮助,我会很感激。 AccountrePository

  • 问题内容: 如何检查我是否在代码中的某个位置导入了模块? 我想检查是否已经导入模块的原因是因为我有一个我不想导入的模块,因为有时会弄乱我的程序。 问题答案: 测试字典中的模块名称: 从文档中: 这是将模块名称映射到已经加载的模块的字典。 请注意,语句有两件事: 如果模块之前从未导入过(=中不存在= ),则将其加载并添加到中。 在当前名称空间中绑定1个或多个引用模块对象或模块名称空间成员的对象的名称

  • 问题内容: 我想检查工作簿中是否包含工作表名称“ Login”。如果存在,那么我要在其中写入数据row = row + 1,否则直接写入数据,然后关闭报告。所以,任何人都可以让我知道该怎么做。我想用下面的方法做。 主类: WritablData类别: 问题答案: 我在这里没有得到我问题的答案,但是是的,现在我有了解决方案,它对我来说也很好用,请检查以下代码,希望它也对您有所帮助: