目前,我正在使用的应用程序有许多工作流依次打开新窗口。我使用以下方式将焦点切换到新窗口:
for (String popUpHandle : driver.getWindowHandles()) {
driver.switchTo().window(popUpHandle);
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)
...
}
同样,我将它与页面标题一起使用。使用 selenium.isElementPresent present 进入条件并在新窗口中执行某些操作。
以上三种解决方案都很好,但在 IE 中花费太多时间,在一个工作流程中,2-3 个窗口保持隐藏状态。
如果我们在单击某个链接或按钮后打开新窗口时立即切换焦点新窗口,我们将不胜感激。
最佳答案
稍微加快速度的一个技巧是始终忽略父窗口。所以做这样的事情:
//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
关于java - 如何在不使用 selenium/webdriver 方法的情况下切换到新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11945554/