2012-08-14 76 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

相关问题