目前,我正在工作的应用程序已经有了许多工作流,这些工作流一个接一个地打开新的窗口。我使用以下方法将焦点切换到新窗口:
for (String popUpHandle : driver.getWindowHandles()) {
driver.switchTo().window(popUpHandle);
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)
...
}
同样,我将它与页面标题一起使用。使用selenium.isElementPresent present进入条件并在新窗口中执行某些操作。
以上三种解决方案运行良好,但在IE中,当在一个工作流程中,2-3个窗口保持隐藏时,需要花费太多时间。
任何指导切换焦点的新窗口,只要我们打开它后,我们点击了一些链接或按钮,将非常感谢。
发布于 2012-08-14 12:03:07
提高速度的一个技巧是始终忽略父窗口。所以做一些类似这样的事情:
//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,但是最新的IEDriver要快得多:http://code.google.com/p/selenium/wiki/InternetExplorerDriver
https://stackoverflow.com/questions/11945554
复制相似问题