java - 如何在不使用 selenium/webdriver 方法的情况下切换到新窗口

标签 java javascript selenium webdriver

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

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/

相关文章:

java - 如何在 while 循环中同时运行三个具有不同 sleep 时间的线程?

javascript - 事件 - 在哪里放置它们?

javascript - react : update one item in a list without recreating all items

java - 如何在spark中读取HDFS序列文件

java - 在 Java 中解析大型 XML 响应

java - 如何将这个逻辑放入代码/数学中?

javascript - 用于 Web 应用程序的 Touchbar API

javascript - Selenium 可以用于测试单页 JavaScript 应用程序吗?

python - 如何修复 Selenium 不清除输入上的默认文本

java - 在 Selenium Java 中打开 href 链接