Selenium检查窗口当前是否打开

时间:2017-07-23 21:07:42

标签: java selenium automation

所以我有一个selenium webdriver将我登录到一个网站,然后我点击一个按钮打开第二个窗口。我使用下面的代码切换到新窗口

 String winParent = driver.getWindowHandle();

 for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
 }

现在在第二个窗口我运行一些自动化。完成后,我会按下保存按钮,这将关闭当前窗口。如果窗口没有关闭它意味着我在页面上有一些错误,我需要循环并修复它。

 driver.findElement(By.id("btnSave")).click();

  if (isAlive(driver) == false) {
      //break and exit
      System.out.println("cic" + name);
      finalString = finalString + "cic: " + name;
      break;

   }


  public Boolean isAlive(WebDriver driver) {
    try {
        driver.getCurrentUrl();//or driver.getTitle();
        return true;
    } catch (Exception ex) {
        return false;
    }
}

当程序捕获错误并且窗口未关闭时,程序按预期工作。但是只要一切都清楚并且窗口关闭,它就会进入上面的if语句并显示此错误。

无法从渲染器接收消息。

我相信我不会检查窗口是否已正确关闭。

编辑:经过一些调试后,似乎一旦窗口关闭,程序就无法真正告诉下一步该做什么。 http://i.imgur.com/l8nsPPr.png

1 个答案:

答案 0 :(得分:0)

我建议使用windowHandle。 您正在String winParent = driver.getWindowHandle();

中保存初始窗口

然后切换到第二个窗口,它将具有不同的句柄。 当您需要检查第二个窗口是否仍然打开时,只需使用:

  private boolean isNewWindowOpened(WebDriver driver, String parentWindowHandle) {
    try {
        return !driver.getWindowHandle().equals(parentWindowHandle);
    } catch (Exception ex) {
        driver.switchTo(parentWindowHandle);
        return false;
    }
相关问题