我正在尝试验证在单击"生成PDF"超链接时是否打开了新窗口。我不需要验证PDF内容,只是想确保在单击测试链接时打开一个新窗口。
我已经尝试过下面的窗口句柄代码,但它不起作用!!
String strCurrWind = driver.getWindowHandle();
for(String strTempWind:driver.getWindowHandles()) {
driver.switchTo().window(strTempWind);
}
String strPDFUrl = driver.getCurrentUrl();
driver.close();
driver.switchTo().window(strCurrWind);
请帮我一些建议....谢谢!
因此,如果您只需要检查新窗口是否已打开:
int oldWindowCount = driver.getWindowHandles().size();
driver.findElement(<By locator for hyperlink here>).click();
int newWindowCount = driver.getWindowHandles().size();
Assert.assertEquals(1, newWindowCount - oldWindowCount);
假设您打开的窗口不超过两个,如果要在当前窗口和新窗口之间切换:
String oldWindow = driver.getWindowHandle();
driver.findElement(<By locator for hyperlink here>).click();
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(oldWindow)) {
driver.switchTo().window(handle);
}
}
当您单击"生成 PDF 链接"时,有两种方式可以发生,
- 打开新的浏览器窗口
- 将打开新的基于操作系统(基于桌面)的窗口。
如果它是一个基于浏览器的窗口,你应该能够使用计时器或getWindowHandles进行调试
如果是基于桌面的窗口,请使用 ROBOT 框架
http://robotframework.googlecode.com/hg/doc/quickstart/quickstart.html
或AutoIT是不错的选择
自动 IT 参考处理弹出窗口
你可以这样写:
String currentWindowHandle = driver.getWindowHandle();
Set<String> windowHandles = driver.getWindowHandles(); //gives the handles of all opened windows
for (String windowHandle : windowHandles) {
if (!windowHandle.contains(currentWindowHandle)) {
driver.switchTo().window(windowHandle); //Switching to the new tab
driver.switchTo().window(currentWindowHandle); //Returning to the previous page
}
}