java - Selenium (WebDriver) Junit 4 在窗口之间切换问题

标签 java selenium webdriver junit4

我正在测试一个 Web 应用程序,该应用程序在单击按钮后很长时间内会创建一个新窗口。顺序如下

窗口1:(父窗口)点击按钮创建窗口2

窗口 2:出现进度窗口,直到服务器上的后台进程返回数据

窗口 3:进度窗口变成第三个窗口(具有不同的句柄)

我想正确等待第三个窗口出现。我知道所有 3 个窗口的“标题”是什么,但是为了从 WebDriver 获取标题,我必须使用以下代码:

while(timeout has not occured...){ 
    for (String handle : _driver.getWindowHandles()) {
       String myTitle = driver.switchTo().window(handle).getTitle();
       if(3rdWindowTitle.equalsIgnoreCase(myTitle)){
           return true;
       }
    }
}

由于“switchTo”,这将在每次循环时有效地来回切换 Activity 窗口。这会导致 Firefox 窗口来回快速循环,令人讨厌。我需要的是一种获取可用窗口标题的方法,而不必在循环中“切换到”每个窗口等待第三个窗口。有什么想法吗?

我基本上想要一个方法(waitForWindowByTitle(titleIWant)),它将阻塞,直到出现我想要的标题的窗口。

最佳答案

好吧,您最好通过检查窗口数量来等待窗口出现。喜欢:

for(int i=0; i<noOfTrials;i++){
        noOfWindows = driver.getWindowHandles().size();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        if(noOfWindows>currentNoOfWindows){
        break;
        }
    }

}

然后,您可以第一次也是最后一次浏览窗口(使用 switchTo)并导航到您想要的窗口。

关于java - Selenium (WebDriver) Junit 4 在窗口之间切换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326208/

相关文章:

javascript - 使用 selenium WebDriver 禁用 javascript?

ruby-on-rails - headless Chrome 空白白屏

java - 如何在编译时使用属性文件创建动态接口(interface)?

java - WAS 控制台损坏 java.io.FileNotFoundException :/secure/layouts/ApplicationServer. collection.table.extends

html - 为变量添加同级定位器

java - 如何用Java打印第一个最大值的Selenium

ruby - 不想关注 .goto

java - Java 中的全局访问

java - Android 菜单充气错误

java - 如何通过组合两个不同的变量来创建变量名