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);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)