3

目前,我正在使用的应用程序有许多工作流程,一个接一个地打开新窗口。我使用以下方式将焦点切换到新窗口:

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

同样,我将它与页面标题一起使用。使用 selenium.isElementPresent present 进入条件并在新窗口中执行某些操作。

上述三种解决方案工作正常,但在 IE 中在一个工作流程中花费太多时间,2-3 个窗口保持隐藏状态。

在我们单击某些链接或按钮后打开新窗口后立即切换焦点新窗口的任何指导,将不胜感激。

4

1 回答 1

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,但最新的 IEDriver 明显更快: http ://code.google.com/p/selenium/wiki/InternetExplorerDriver

于 2012-08-14T04:03:06.873 回答