【问题标题】:How to handle the pop window to access the pop elements如何处理弹出窗口以访问弹出元素
【发布时间】:2013-09-26 03:03:51
【问题描述】:

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

@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 银行:个人银行服务 我将访问弹出窗口的元素 线程“main” org.openqa.selenium.NoSuchElementException 中的异常:无法找到元素:{“method”:“xpath”,“selector”:“.//*[@id='wrapper']/div[6] /a/img"} 命令持续时间或超时:30.15 秒

【问题讨论】:

  • 嗨@Satendra 你说的弹出窗口是什么意思?是java脚本窗口还是html弹出?如果是 html 弹出窗口,那么您不必遵循您创建的方法。这是一个直接的过程。如果您需要更多帮助,请告诉我。

标签: selenium selenium-webdriver


【解决方案1】:

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

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

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);

【讨论】:

  • handles.get(handles.size() - 1) 它显示编译器错误。它是必需的数字值
  • 找不到符号符号:方法 get(int) 位置:java.util.Set 类型的变量句柄 ----(Alt-Enter 显示提示)
  • 对不起,我修改了示例代码先转换为数组,这样最后一项就可以检索到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
相关资源
最近更新 更多