2011-09-06 85 views
1

我正在測試一個Web應用程序,該應用程序在點擊一個按鈕後很久就創建一個新窗口。該序列是下列Selenium(WebDriver)Junit 4在窗口之間切換問題

窗口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'循環。這導致firefox窗口來回循環非常迅速,令人討厭。我需要的是一種獲得可用窗口標題的方法,無需在等待第三個窗口的循環中切換每個窗口。有任何想法嗎?

我基本上想要一個方法(waitForWindowByTitle(titleIWant)),它將阻塞,直到出現我想要的標題窗口。

回答

1

好吧,您可以通過檢查窗口數量等待您的窗口出現。像:

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

} 

則第一次也是最後一次,你可以通過Windows(使用SWITCHTO)瀏覽和導航到你想要的窗口。

相關問題