Java Selenium-脚本应等待浏览器手动关闭
我正在使用Java实现selenium自动化 我有一个场景,当我手动关闭当前场景的chrome浏览器时,我需要移动到cucumber功能文件中的下一个场景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) {
请帮助我实现此功能您可以尝试类似循环的操作,直到浏览器死机或无法访问异常
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(驱动程序)方法帮助了我,正如它帮助了其他人一样