selenium笔记之多窗口

在使用selenium中,会经常遇到,校验弹窗,或者是多标签之类的,

会发现在当前webdriver中.查找想检查的元素,比如弹窗上某个元素就查找不到了

那么就出现了一个句柄的概念

在Selenium中,可以使用`driver.window_handles`方法获取当前浏览器中所有窗口的句柄。

该方法返回一个列表,其中包含每个窗口的唯一标识符。

可以使用这些句柄来在不同的窗口之间切换,例如使用`driver.switch_to.window(handle)`方法将控制转移到具有给定句柄的窗口。

话不多说上代码

此代码校验点有两个:

1、是不是新打开了一个窗口

2、新打开的窗口链接是不是符合预期

int numBefore = webDriver.getWindowHandles().size();//点击前有多少个句柄
((JavascriptExecutor) webDriver).executeScript("arguments[0].click();", webElement);//点击(有时候单纯的.click不生效就用这个方法)
//点击新打开页面
int numAfter = webDriver.getWindowHandles().size();//点击后有多少个句柄
if(numAfter>numBefore){
//说明是新建标签页打开的
String winHandleBefore = webDriver.getWindowHandle();
for(String winHandle : webDriver.getWindowHandles()) {
if (winHandle.equals(winHandleBefore)) {
continue;
}
webDriver.switchTo().window(winHandle);//将控制转移给新打开的句柄窗口以方便获取新窗口元素校验
break;
}
}
if(webDriver.getCurrentUrl().contains(校验点)
){
//校验点
}
//重新变成原来页面,方便后续继续回归原页面其它功能
if(numAfter>numBefore){
webDriver.close();
for(String winHandle : webDriver.getWindowHandles()) {
webDriver.switchTo().window(winHandle);
}
}
posted @   小眼睛大生活  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示