2012-08-14 113 views
3

目前,我所工作的應用程序已經有許多工作流程可以一個接一個地打開新窗口。我用以下方法將焦點切換到新窗口:如何使用selenium/webdriver方法切換到新窗口

for (String popUpHandle : driver.getWindowHandles()) { 
driver.switchTo().window(popUpHandle); 
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window) 
... 
} 

同樣的方法,我將它與頁面標題一起使用。使用selenium.isElementPresent存在條件並在新窗口中執行某些操作。

以上三種解決方案工作正常,但在一個工作流程中需要太多時間在IE中,2-3個窗口仍然隱藏。

任何指導切換焦點新窗口,只要我們打開後,我們點擊一​​些鏈接或按鈕,將非常感激。

回答

5

加速一點的一個訣竅是總是忽略父窗口。所以這樣做:

//before any pop ups are open 
String parentHandle = driver.getWindowHandle(); 

//after you have pop ups 
for (String popUpHandle : driver.getWindowHandles()) { 
    if(!popUpHandle.equals(parentHandle)){ 
    driver.switchTo().window(popUpHandle); 
    if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)){ 
     //do something here 
    } 
    } 
} 

您還可以切換到最近打開的窗口中這樣因爲收藏品的,要責令(*我想,沒有獲得設立硒此刻測試*):

String newWindowHandle = driver.getWindowHandles()[driver.getWindowHandles().length - 1]; 
driver.switchTo().window(newWindowHandle); 

最後,不知道你使用的硒的版本,但最新的IEDriver是顯著快:http://code.google.com/p/selenium/wiki/InternetExplorerDriver

+0

非常感謝您的回覆。我也嘗試了上述技巧,但是當我圍繞一個工作流程結束並且看到總共有6-7個窗口句柄存在時,雖然只有兩個窗口是可見的,但是問題出現了,因此循環遍歷了5個窗口花費太多時間!我正在使用最新的IE驅動程序(2.25)。 – arin 2012-08-14 04:13:39

+0

以另一種方式更新答案,以抓住你剛剛打開的最新窗口,這可能也有幫助,仔細檢查它的工作原理,但我認爲它會 – brendan 2012-08-14 04:21:47

+0

優秀的方法。我剛剛檢查過它,速度非常快。 – arin 2012-08-14 06:08:11

相關問題