目前,我正在工作的应用程序有许多工作流程,一个接一个地打开新窗口。我使用以下方法将焦点切换到新窗口:
for (String popUpHandle : driver.getWindowHandles()) {
driver.switchTo().window(popUpHandle);
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)
...
}
同样的方式,我用它与页面标题。使用selenium.isElementPresent存在以获取条件并在新窗口中执行某些操作。
以上三种解决方案工作正常,但在IE中占用太多时间,在一个工作流程中,2-3个窗口仍然隐藏。
在我们点击某个链接或按钮后立即打开焦点新窗口的任何指导都将非常感谢。
答案 0 :(得分: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
}
}
}
您也可以通过这种方式切换到最近打开的窗口,因为应该订购该集合(*我认为,目前无法访问Selenium设置以进行测试*):
String newWindowHandle = driver.getWindowHandles()[driver.getWindowHandles().length - 1];
driver.switchTo().window(newWindowHandle);
最后,不确定您使用的是哪种版本的Selenium,但最新的IED驱动程序要快得多:http://code.google.com/p/selenium/wiki/InternetExplorerDriver