如何杀死在后台运行的 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 警报