51Testing软件测试论坛
标题:
各位大神帮忙看看,Java +selenium 获取到两个窗口的句柄一样是为什么
[打印本页]
作者:
youngTest
时间:
2019-8-14 15:52
标题:
各位大神帮忙看看,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
为什么两个窗口的句柄一样呢?
作者:
玖岚昊
时间:
2019-8-15 11:43
个人理解,没有切换到新窗口,焦点还在原来的句柄
作者:
清晨一缕阳光
时间:
2019-8-16 10:02
2楼正解,代码操作新打开一个窗口,但焦点仍然在原窗口上,需要把焦点切换到新窗口上,然后再获取焦点!
作者:
qqq911
时间:
2019-8-16 11:00
没切换成功吧
作者:
jingzizx
时间:
2019-8-16 12:47
是不是就是一个
作者:
海海豚
时间:
2019-8-16 15:47
焦点
作者:
w7956121
时间:
2019-8-28 20:41
/**
* 功能: 切换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;
}
作者:
kaithyn
时间:
2019-10-8 16:09
看大窗口有几个,有个的只是一个跳转而已,窗口还是同一个大窗口
作者:
chengyanyan
时间:
2020-1-3 15:49
就是一个句柄
作者:
chengyanyan
时间:
2020-1-3 15:50
只有一个大窗口 是一个句柄
作者:
1005731757@qq.c
时间:
2020-1-7 13:59
首先 ,确认点击链接后是否在当前窗口打开,如果是当前窗口打开,则是同一个句柄是对的
若在新窗口打开,则需要将焦点切换到新窗口才能获取新窗口的句柄,你代码里没有转换窗口哦
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2