我有处理弹出窗口的测试用例,但是控件不会弹出窗口。它显示的是主窗口的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银行:个人银行服务我将访问线程“org.openqa.selenium.NoSuchElementException”中弹出异常的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“./*@id=‘包装’/div6 6/a/img”命令持续时间或超时: 30.15秒
发布于 2013-09-24 19:46:59
你走在正确的轨道上。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);https://stackoverflow.com/questions/18988150
复制相似问题