我正在尝试使用 java-Selenium TestNG 运行自动化脚本。 为了打开浏览器,我调用了 chrome 驱动程序。即使停止脚本后,chrome 驱动程序仍在任务管理器的后台进程中运行。 例如,如果我执行脚本 20 次,那么 chrome 驱动程序将在任务管理器中运行 20 次。由于这个问题,我没有遇到任何问题。但仍然想知道我是否应该在脚本中添加任何内容来停止这些驱动程序? 。以后会不会有什么问题?
您可以杀死在@AfterSuite(Java中)中写入的未关闭进程
如果您在 Windows 上启动测试:
//kill chromedriver
Runtime.getRuntime().exec("taskkill /im chromedriver.exe /f");
如果您在 Linux 上启动测试:
String[] cmd = new String[]{"/bin/sh", "killchrome.sh"};
Process pr = Runtime.getRuntime().exec(cmd);
并且在killchrome.sh(在此示例中文件位于主项目目录中)中,您应该编写
kill $(ps aux | grep 'chromedrive[r]' | awk '{print $2}')
WebDriver driver = new ChromeDriver();
try{
========== ==========
YOUR CODE GOES HERE
========== ==========
} catch (Exception e) {
========== ==========
YOUR CODE GOES HERE
========== ==========
} finally{
driver.quit();
}
在finally 块中关闭实例始终是一个好习惯。
用途:
driver.quit();
这将杀死关闭驱动程序并杀死实例。
这个脚本
taskkill /FI "IMAGENAME eq geckodriver.exe" /F
可以为你杀死geckodriver。如果你想杀死 chromedriver,只需将名称替换为新名称即可
对于我使用 macos/linux 来说,杀死那些正在运行的后台的命令是
pkill -f chromedriver
pkill -f webdriver