我正在测试一个 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/