首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何不使用selenium/webdriver方法切换到新窗口

如何不使用selenium/webdriver方法切换到新窗口
EN

Stack Overflow用户
提问于 2012-08-14 11:54:02
回答 1查看 5.1K关注 0票数 3

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

代码语言:javascript
运行
复制
for (String popUpHandle : driver.getWindowHandles()) {
driver.switchTo().window(popUpHandle);
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)
...
}

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

以上三种解决方案运行良好,但在IE中,当在一个工作流程中,2-3个窗口保持隐藏时,需要花费太多时间。

任何指导切换焦点的新窗口,只要我们打开它后,我们点击了一些链接或按钮,将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-14 12:03:07

提高速度的一个技巧是始终忽略父窗口。所以做一些类似这样的事情:

代码语言:javascript
运行
复制
//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 *):

代码语言:javascript
运行
复制
String newWindowHandle = driver.getWindowHandles()[driver.getWindowHandles().length - 1];
driver.switchTo().window(newWindowHandle);

最后,我不确定您使用的是哪个版本的Selenium,但是最新的IEDriver要快得多:http://code.google.com/p/selenium/wiki/InternetExplorerDriver

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11945554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档