Java Selenium-脚本应等待浏览器手动关闭

Java Selenium-脚本应等待浏览器手动关闭,java,selenium,selenium-webdriver,junit,cucumber,Java,Selenium,Selenium Webdriver,Junit,Cucumber,我正在使用Java实现selenium自动化 我有一个场景,当我手动关闭当前场景的chrome浏览器时,我需要移动到cucumber功能文件中的下一个场景 请帮助我实现此功能您可以尝试类似循环的操作,直到浏览器死机或无法访问异常 WebDriver driver = new FirefoxDriver(); driver.get("http://www.google.com"); Boolean check = false; while (!check) {

我正在使用Java实现selenium自动化 我有一个场景,当我手动关闭当前场景的chrome浏览器时,我需要移动到cucumber功能文件中的下一个场景


请帮助我实现此功能

您可以尝试类似循环的操作,直到浏览器死机或无法访问异常

 WebDriver driver = new FirefoxDriver();

    driver.get("http://www.google.com");

    Boolean check = false;

    while (!check) {

        try {
            driver.getTitle();
            Thread.sleep(200);
        } catch (Exception e) {
            //you can verify correct exception here ie not reachable, dead etc..
            check = true;
        }

    }

    System.out.println("after browser close");
    //continue your code here

如果在运行selenium测试时手动关闭浏览器,您将获得: org.openqa.selenium.NoSuchWindowException:未找到窗口。浏览器窗口可能已关闭


您可以尝试捕获此异常,然后从那里继续。

您也可以这样做

    WebDriver driver = new ChromeDriver();

    waitForDriverToClose(driver);
waitForDriverToClose

private static void waitForDriverToClose(WebDriver driver) {
        try {
            WebDriverWait wait = new WebDriverWait(driver, 20);
            wait.until(ExpectedConditions.not(new ExpectedCondition<Boolean>() {
                @Override
                public Boolean apply(WebDriver driver) {
                    try {
                        driver.getTitle();
                        return true;
                    } catch (Exception ex) {
                        System.out.println("Couldn't Connect Driver / Driver Closed");
                        return false;
                    }
                }
            }));
        } catch (org.openqa.selenium.TimeoutException ex) {
            System.out.println("Timeout Trying Again");
            waitForDriverToClose(driver);
        }
    }
private static void waitForDriverToClose(WebDriver驱动程序){
试一试{
WebDriverWait wait=新的WebDriverWait(驱动程序,20);
wait.until(ExpectedConditions.not(new ExpectedCondition()){
@凌驾
公共布尔应用(WebDriver驱动程序){
试一试{
driver.getTitle();
返回true;
}捕获(例外情况除外){
System.out.println(“无法连接驱动程序/驱动程序已关闭”);
返回false;
}
}
}));
}catch(org.openqa.selenium.TimeoutException-ex){
System.out.println(“重试超时”);
waitForDriverToClose(司机);
}
}

您尝试过什么,结果如何?请提供一些代码和您遇到的错误,以便我们能够提供帮助。@madhan非常感谢,waitForDriverToClose(驱动程序)方法帮助了我很多,waitForDriverToClose(驱动程序)方法帮助了我,正如它帮助了其他人一样