我正在使用testcase来处理弹出窗口,但是控件不会弹出窗口。它显示主窗口的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秒
答案 0 :(得分:2)
你走在正确的轨道上。 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);