【问题标题】:how to close Python selenium webdriver window如何关闭 Python selenium webdriver 窗口
【发布时间】:2017-07-24 06:56:40
【问题描述】:

我有一个 python 脚本,可以每小时从网站上抓取数据。它目前存储在服务器上并且运行良好,因为我正在使用任务调度程序来安排它每小时执行一次脚本。

我正在使用此代码

driver.quit()

退出浏览器窗口

我的问题是,每当我不登录服务器时,它就会开始堆叠 webdriver 窗口,因为当我登录服务器时,driver.quit() 函数无法正常工作。每天早上上班时,我都有大量的窗口要关闭服务器。

我尝试退出、关闭、处置,但没有帮助。我还能尝试什么?

【问题讨论】:

  • 当您使用控制台(终端)手动执行时,您的代码是否适用于 quit()
  • 是的。当我没有登录到服务器时退出不起作用
  • 老实说,在执行driver.quit() 之前,它听起来像是引发了异常。您确定您的代码完全完成,没有任何异常吗?

标签: python selenium webdriver


【解决方案1】:

对于在 2021 年仍然认为这个问题相关的任何人(见鬼!)。

对我来说driver.quit() 绝对是正确的方法。主要问题是没有正确清理测试,这意味着从未调用过 driver.quit()

  • 无论测试是否崩溃,请确保运行清理步骤。例如在unittest 中使用tearDowntearDownClass 方法(在setUp 中设置驱动程序。

【讨论】:

    【解决方案2】:

    你不能在无头模式下刮吗? (以 chrome 为例)

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.headless = True
    ...
    driver = webdriver.Chrome(chrome_options=chrome_options)
    driver.create_options()
    

    【讨论】:

    • 是的,但您仍然需要关闭。我实际上在这里,因为我刚刚意识到这一点 - 我有运行无头 firefox 的脚本,无头进程保持打开状态,一开始无辜地游荡,最终在他们军团的重压下摧毁你的系统。
    • 是的,没错,但是没有他的代码很难看出哪里出了问题。
    【解决方案3】:

    对于 Python 和 chromedriver,我发现这两种方法很有用(注意区别):

    driver.close() - 关闭浏览器活动窗口。

    driver.quit() - 关闭所有浏览器窗口并结束驱动程序的会话/进程。

    【讨论】:

      【解决方案4】:

      在使用 chromedriver 的 python 中,我退出了 Chrome 进程:

      driver.close()
      

      【讨论】:

        【解决方案5】:

        我使用linux命令关闭所有。这是我在完成所有抓取工作后运行的两个命令:

        • 杀死火狐
        • pkill Xcfb

        【讨论】:

          【解决方案6】:

          我认为webDriver.Dispose() 应该可以工作,它会关闭所有浏览器窗口。这是SO post about the 3 different ways to close a webdriver

          【讨论】:

          • 在python中,你得到的只是AttributeError: 'WebDriver' object has no attribute 'Dispose'
          猜你喜欢
          • 2023-01-11
          • 1970-01-01
          • 1970-01-01
          • 2012-07-12
          • 1970-01-01
          • 2016-08-12
          • 2013-08-29
          • 2012-08-03
          • 2019-05-16
          相关资源
          最近更新 更多