各位大神帮忙看看,Java +selenium 获取到两个窗口的句柄一样是为什么
点击页面的链接,打开了新的窗口:driver.get("https://open.unionpay.com/tjweb/index");
driver.manage().window().maximize();
// 获取当前窗口的句柄
String currentWindow = driver.getWindowHandle();
System.out.println("当前窗口的句柄是:"+currentWindow);
driver.findElement(By.linkText("服务协议")).click();
Thread.sleep(2000);
// 打印新窗口句柄
System.out.println("新窗口的句柄为:"+driver.getWindowHandle());
Thread.sleep(2000);
打印的日志:
当前窗口的句柄是:CDwindow-9454A0922BCD65DBCBEF3CD8DF979F91
新窗口的句柄为:CDwindow-9454A0922BCD65DBCBEF3CD8DF979F91
为什么两个窗口的句柄一样呢?
个人理解,没有切换到新窗口,焦点还在原来的句柄 2楼正解,代码操作新打开一个窗口,但焦点仍然在原窗口上,需要把焦点切换到新窗口上,然后再获取焦点! 没切换成功吧 是不是就是一个 焦点 /**
* 功能: 切换windows窗口
*@param driver
*@param windowTitle
*@return boolean
*/
public boolean switchToNewWindow(WebDriver driver, String windowTitle) {
boolean flag = false;
try {
String currentHandle = driver.getWindowHandle();
Set<String> handles = driver.getWindowHandles();
for (String s : handles) {
if (s.equals(currentHandle))
continue;
else {
driver.switchTo().window(s);
if (driver.getTitle().contains(windowTitle)) {
flag = true;
System.out.println("Switch to window: " + windowTitle
+ " successfully!");
break;
} else
continue;
}
}
} catch (NoSuchWindowException e) {
System.out.println("Switch to window: " + windowTitle
+ " failed!");
e.printStackTrace();
flag = false;
}
return flag;
} 看大窗口有几个,有个的只是一个跳转而已,窗口还是同一个大窗口 就是一个句柄 只有一个大窗口 是一个句柄 首先 ,确认点击链接后是否在当前窗口打开,如果是当前窗口打开,则是同一个句柄是对的
若在新窗口打开,则需要将焦点切换到新窗口才能获取新窗口的句柄,你代码里没有转换窗口哦
页:
[1]