[英]Cannot run program “START”: error=2, No such file or directory while trying to kill Chrome process in MAC
我的IDE是eclipse,我在MAC上使用了Selenium Webdriver 。 每当我在下面执行我的代码时,我想杀死/关闭以前打开的浏览器,然后启动一个新实例并保持打开状态。 因此,一次只能打开一个浏览器实例。 我这样做不是出于测试目的。 我这样做是因为我想自动化一个任务。
这是我每次执行代码时都会遇到的错误:
Cannot run program "START": error=2, No such file or directory
这是我的代码:
public class Demo {
public static void main(String[] args){
System.setProperty("webdriver.chrome.driver", "/Users/Downloads/chromedriver/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
try{
Runtime.getRuntime().exec("START taskkill /F /IM chrome.exe");
System.exit(0);
}
catch(IOException io){
System.out.println(io.getMessage());
}
}
}
这在Windows上工作正常。 如何在MAC / unix /环境中解决此问题,或者应该在代码中进行哪些更改?
我被告知此错误与管理员特权有关,因此我应以管理员身份运行eclipse。 所以我做到了: sudo open Eclipse.app/
。 因此,eclipse以管理员身份打开并执行了代码,但我仍然遇到相同的错误。
根据您的问题,使用以下代码行:
Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");
杀死Browser Client进程将违反所有最佳实践 。
根据最佳实践通过Selenium
自动化时,应在tearDown() {}
调用quit()
方法。 根据WebDriver W3C Editor's Draft
调用quit()
通过发送带有{“ flags”:[“ eForceQuit”]}}的 “ quit”命令来DELETE
当前浏览会话,最后在/ shutdown EndPoint
上发送GET请求。
作为GeckoDriver (兼容W3C的WebDriver变体)的示例, 以下是事件序列:
1503397488598 webdriver::server DEBUG -> DELETE /session/8e457516-3335-4d3b-9140-53fb52aa8b74
1503397488607 geckodriver::marionette TRACE -> 37:[0,4,"quit",{"flags":["eForceQuit"]}]
1503397488821 webdriver::server DEBUG -> GET /shutdown
因此,在调用quit()
方法时, Web Client会话和WebDriver实例被完全杀死。 因此,您不必合并任何其他步骤,而这将是额外的开销。
替换代码行:
Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");
与:
driver.quit();
在这里,您可以找到有关Selenium : How to stop geckodriver process impacting PC memory, without calling driver.quit()?
的详细讨论Selenium : How to stop geckodriver process impacting PC memory, without calling driver.quit()?
chmod 777
) Test
。 tearDown(){}
方法内调用driver.quit()
,以优雅地关闭和破坏WebDriver和Web Client实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.