如何在selenium Web驱动程序中执行测试之前关闭所有浏览器实例?

时间:2016-09-30 12:01:38

标签: selenium-webdriver

在我们开始使用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();
        }

2 个答案:

答案 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");