在我们开始使用selenium Web驱动程序中的新测试之前,是否有一种方法可以关闭所有先前启动的浏览器窗口。
我试图通过以下代码关闭已经启动的Chrome浏览器窗口,但这无助于关闭以前的浏览器窗口,而是关闭测试中创建的当前chrome驱动程序实例。
System.setProperty("webdriver.chrome.driver", "<Path of chromedriver.exe>");
WebDriver chromeDriver = new ChromeDriver();
for(String eachWindowHandle:chromeDriver.getWindowHandles()){
chromeDriver.switchTo().window(eachWindowHandle).close();
}
答案 0 :(得分:2)
我们正在使用这样的
String processName = "chromedriver.exe";
if (isProcessRunning(processName))
{
Prerequisites.killProcess(processName);
}
使用的函数实现如下=&gt;
<强> isProcessRunning 强>
public static boolean isProcessRunning(String serviceName)
{
Process p;
try {
p = Runtime.getRuntime().exec(TASKLIST);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null)
{
if (line.contains(serviceName))
{
return true;
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
return false;
}
<强> killProcess 强>
public static void killProcess(String serviceName)
{
try
{
Runtime.getRuntime().exec(KILL + serviceName + " /T");
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 1 :(得分:0)
在打开新浏览器以运行所需的测试之前,使用以下代码关闭所有浏览器
Runtime.getRuntime().exec("taskkill /F /IM <browserinstance>.exe");
例如:
Runtime.getRuntime().exec("taskkill /F /IM firefox.exe");
Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");