gpt4 book ai didi

带有 Selenium 的 Python 脚本在手动关闭应用程序时使 firefox.exe 运行

转载 作者:行者123 更新时间:2023-12-05 07:04:19 25 4
gpt4 key购买 nike

我有一个在 Selenium 上运行的简单脚本。我用它制作了一个 .exe 文件,它工作得很好,但我注意到一个问题。.exe 按预期打开控制台,但如果我在脚本运行时手动关闭控制台,它会在“进程”选项卡中打开 firefox.exe。

zombie processes after manually closing .exe

我的问题是:如果脚本的执行被手动中断,我如何让 Python 关闭这些进程?

我猜我需要捕获异常,但是如果我们手动停止程序,Python 会抛出什么异常?

最佳答案

理想情况下,调用quit() 会删除WebDriver 的当前实例。变体和当前浏览上下文

但是,如果您通过关闭控制台手动中断脚本的执行,浏览上下文 会在视觉上关闭但数量众多 browser processes仍会继续消费CPUmemory


解决方案

在这些情况下,您必须使用以下任一解决方案显式终止 Browser 进程和 WebDriver 实例:

  • Java 解决方案(Windows):

    import java.io.IOException;

    public class Kill_ChromeDriver_GeckoDriver_IEDriverserver
    {
    public static void main(String[] args) throws Exception
    {
    Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe /T");
    Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe /T");
    Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe /T");
    }
    }
  • Python 解决方案(Windows):

    import os
    os.system("taskkill /f /im geckodriver.exe /T")
    os.system("taskkill /f /im chromedriver.exe /T")
    os.system("taskkill /f /im IEDriverServer.exe /T")
  • Python 解决方案(跨平台):

    import os
    import psutil

    PROCNAME = "geckodriver" # or chromedriver or IEDriverServer
    for proc in psutil.process_iter():
    # check whether the process name matches
    if proc.name() == PROCNAME:
    proc.kill()

引用资料

您可以在以下位置找到一些详细的讨论:

关于带有 Selenium 的 Python 脚本在手动关闭应用程序时使 firefox.exe 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62955373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com