如何杀死在后台运行的 IEDriver exe 进程(Selenium webdriver)?

Posted

技术标签:

【中文标题】如何杀死在后台运行的 IEDriver exe 进程(Selenium webdriver)?【英文标题】:How to Kill IEDriver exe process running in background (Selenium webdriver)? 【发布时间】:2014-03-26 06:00:22 【问题描述】:

我正在使用 selenium webdriver(用于 Internet Explorer)。它的作用基本上是在 Internet Explorer 中打开一个网页并进行表单提交。

如何自动杀死后台运行的 internetexplorer.exe?

【问题讨论】:

【参考方案1】:

您可以在测试脚本的末尾添加以下代码来关闭 IE 驱动程序。所以不需要手动关闭。

try 
    Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe");
 catch (IOException e) 
    e.printStackTrace();

否则打开记事本并粘贴以下代码。

taskkill /F /IM IEDriverServer.exe

将文件另存为 closedriver.bat

当你想关闭 IE 驱动时点击这个批处理文件。

【讨论】:

嗨,上面的代码试过了。但这对我不起作用。我试过你的尝试部分,但它没有帮助我。你能给我提供任何其他编码级别的方法吗?谢谢 在任务管理器中查看驱动进程的名称。可能名字不一样 在 CMD 中输入 taskkill /F /IM IEDriverServer.exe 就像一个魅力。谢谢!【参考方案2】:

关闭浏览器:

try
WebDriver driver = new InternetExplorerDriver();
.. write all the webdriver code here like driver.get, driver.findElement().click() etc. etc.

catch(Throwable webDriverException)
  if(webDriverException.getMessage().contains("org.openqa.selenium.WebDriverException: Error communicating with the remote browser. It may have died")
      // Kill IEDriverServer.exe process
      // Using WebDriver WindowUtils utility 
      WindowsUtils.killByName("IEDriverServer.exe");

      // Or using JavaRunTime
     Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe")
  


看看有没有帮助!!!

【讨论】:

我希望您的代码在用户关闭浏览器时执行。 webdriver中是否有任何浏览器关闭(X)事件。 是的,在 webdriver 中有 close() 方法可以关闭当前浏览器窗口。为了关闭 webdriver 打开的所有浏览器窗口,请使用 quit() 方法。在编写 close()/quit() 方法后使用上面的代码。稍微修改了我之前的回复。 如果我使用 close() 或 quit() 方法,那么它会自动关闭窗口。但我希望用户通过按浏览器关闭(X)按钮自己关闭浏览器。 所以我想要的是如果(用户通过按十字(X)按钮关闭浏览器)然后从任务管理器中杀死 iedriverserver.exe 进程 那么,您想检测浏览器何时被用户手动关闭?并从任务管理器中关闭 IEDriverServer.exe。对吗?【参考方案3】:

如果您使用 MS 测试,请在 [TestCleanup][ClassCleanup] 上 添加以下内容:

foreach(var process in Process.GetProcess("IEDriverServer"))

  process.Kill();

【讨论】:

以上是关于如何杀死在后台运行的 IEDriver exe 进程(Selenium webdriver)?的主要内容,如果未能解决你的问题,请参考以下文章

我如何杀死所有 cmd.exe,除了当前从批处理中运行的那个?

pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行

在没有服务的情况下杀死应用程序后如何在后台线程中运行代码?

如何使用带有 IEDriver 的 webdriver 处理 javascript 警报

如何防止 ActivityManager 杀死我的应用程序的后台进程

怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死