首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理pop窗口以访问pop元素

如何处理pop窗口以访问pop元素
EN

Stack Overflow用户
提问于 2013-09-24 17:25:01
回答 1查看 3.2K关注 0票数 0

我有处理弹出窗口的测试用例,但是控件不会弹出窗口。它显示的是主窗口的getTitle而不是弹出窗口。你能通过下面的代码吗。

代码语言:javascript
复制
@Test
public void testText1() throws Exception {
    driver.get("http://www.hdfcbank.com");
    Thread.sleep(8000);
    driver.findElement(By.xpath(".//*[@id='loginsubmit']")).click();

    String popupHandle = driver.getWindowHandle();
    WebDriver popup;

    popup = driver.switchTo().window(popupHandle);
    System.out.println(popup.getTitle());
    if (popup.getTitle().equals("netbanking")) {
        System.out.println("I am going to access the elements of popup");
        driver.findElement(By.xpath(".//*[@id='wrapper']/div[6]/a/img")).click();
    } else {
        System.out.println("Worth Trying try harder to get success");
        //   
    }

}

输出:{d0f39d30-49e7-4203-b9ef-10380fbfcb5e} HDFC银行:个人银行服务我将访问线程“org.openqa.selenium.NoSuchElementException”中弹出异常的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“./*@id=‘包装’/div6 6/a/img”命令持续时间或超时: 30.15秒

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-24 19:46:59

你走在正确的轨道上。driver.getWindowHandle()方法只返回当前窗口的句柄,该窗口将是您的主窗口。如果打开另一个弹出窗口,则需要调用Set<String> handles = driver.getWindowHandles()来返回所有可用句柄的列表。然后你可以打电话给driver.switchTo().window(handles.get(handles.size() - 1))。这将切换到最后列出的(最新)窗口句柄。

您也不需要声明一个新的WebDriver对象。通过调用switchTo(),可以将驱动程序的焦点转移到新窗口。在进行切换之前,请确保保存对主窗口句柄的引用,以便以后能够切换回主窗口。

代码语言:javascript
复制
String mainHandle = driver.getWindowHandle();
String[] handles = driver.getWindowHandles().toArray(new String[0]);
driver.switchTo().window(handles[handles.length - 1]);
...
driver.close(); //close the popup window
driver.switchTo().window(mainHandle);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18988150

复制
相关文章

相似问题

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