Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Selenium切换窗口driver.switchTo().window(handle)

Selenium切换窗口driver.switchTo().window(handle)

作者头像
软测小生
发布于 2019-07-05 02:59:55
发布于 2019-07-05 02:59:55
2.3K00
代码可运行
举报
文章被收录于专栏:软测小生软测小生
运行总次数:0
代码可运行
今天继续深入Selenium 切换窗口的学习

当测试页面同时出现2个或者以上窗口时候,而且新打开的window没有namem,可以使用driver.switchTo().window(handle)来进行切换,直接上代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.Iterator;  
import java.util.Set;  
import org.openqa.selenium.NoSuchWindowException;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.chrome.ChromeDriver;  
public class forEachWindows {  
protected void switchWindowByHandle(WebDriver dr, String currentHandle, Set<String> handles) {  
        Iterator<String> it = handles.iterator();  
 while (it.hasNext()) {  
            String newHandles = it.next();  
 if(currentHandle.equals(newHandles)) {  
 continue;  
            }  
 try {  
                String newHanlde = it.next();  
                WebDriver window = dr.switchTo().window(newHanlde);// 切换到新窗口   
                System.out.println("New page Title is:" + window.getTitle());    
                System.out.println("New page URL is:" + window.getCurrentUrl());  
            } catch (Exception e) {    
                System.out.println("无法切换至新打开的窗口");    
                System.out.println(e.getMessage());    
            }  
        }             
    }  
 protected boolean switchToWindowByTitle(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.printf("Window: " + windowTitle  + " cound not found!", e.fillInStackTrace());    
            flag = false;    
        }    
 return flag;    
    }     
 public void test(){  
        WebDriver driver = new ChromeDriver();  
        String currentHandle = driver.getWindowHandle();//获取当前窗口的句柄 
        Set<String> handles = driver.getWindowHandles();//获取所有窗口的句柄 
        String windowTitle = driver.getTitle();  
        switchWindowByHandle(driver, currentHandle, handles);//通过句柄来控制切换到新窗口 
 //有的业务逻辑需求是要通过窗口的Title来切换窗口 
 //首先获取当前driver驱动的所有窗口的handle然后进行比对筛选 
 //如果窗口的title符合预期,则切换,并返回true,反之则返回false。 
        switchToWindowByTitle(driver, windowTitle);//通过Title来切换窗口 
    }  
}  
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软测小生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《手把手教你》系列技巧篇(二十二)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换上卷(详细教程)
上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作。
北京-宏哥
2021/09/08
8650
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作。
北京-宏哥
2021/09/08
7220
Selenium+TestNG实战-7 多个tab之间driver的切换
本篇接着前面内容,主要学习driver如何在同一个浏览器的两个不同tab进行切换,然后如何判断我们创建的文章就是我们新建的。
凯哥Java
2019/06/30
1.9K0
【UI自动化-3】UI自动化元素操作专题
在熟悉了元素定位之后,我们接下来就要学习对定位到的元素进行操作这项内容了。我简要做了个总结,如下图:
云深i不知处
2020/09/16
2.9K0
技术分享 | 网页 frame 与多窗口处理
那么通过传入 id、name、index 以及 Selenium 的 WebElement 对象来切换 frame
Hogwarts_测试
2022/05/11
8890
《手把手教你》系列技巧篇(二十四)-java+ selenium自动化测试-三大延时等待(详细教程)
前边讲解完八大元素定位大法,今天宏哥讲解和分享一下三大延时等待。宏哥这里简称“三等八定”。很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1. 有frame,2. 没有加等待。殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出门?凹凸曼分分中内心一万只羊驼飞过,欺负哥速度慢,哥不跟你玩了,抛个异常撂挑子了。 那么怎么才能照顾到凹凸曼缓慢的加载速度呢?只有一个办法,那就是等喽。说到等,又有三种等法,且听宏哥一一道来。
北京-宏哥
2021/09/08
2.1K0
Selenium帮助你轻松实现浏览器多窗口操作
元素有属性,浏览器的窗口其实也有属性的,浏览器窗口的属性用句柄(handle)来识别。
霍格沃兹测试开发Muller老师
2024/03/04
4500
Java Selenium 自动化测试实践探索
之前我们提到了 TDD 这一软件工程的技巧,其中很重要的一点就是自动化测试。在 Java 语言中,如果是对部分代码进行测试,通常会选择使用 Junit 。但毕竟是单元测试,对于结合了前后端的具体功能还是有限。通常这一部分会交给测试人员。那么有没有一款自动操作网页的测试工具呢?今天的主角就是其中之一。
花花Binki
2024/10/26
1771
Java Selenium 自动化测试实践探索
自动化-Selenium 3-常用API(Java版)
Actions类提供的鼠标事件常用方法(perform()执行所有Actions中存储的行为):
wangmcn
2022/07/22
1.1K0
自动化-Selenium 3-常用API(Java版)
selenium2java 遇到有三个窗口用例的处理办法
本人在学习selenium2java的时候遇到一个用例,执行完竟然有三个窗口,使用handles的办法教程只写了两个窗口的解决办法,后来我把handles全都输出出来后发现其实相当于三个窗口,再进去第三个窗口的时候,多判断一下就好了,斜面分享一下自己的经验。
FunTester
2019/08/31
4180
selenium-java web自动化测试工具
本篇文章由来,这两天整理了下自己经常使用而且很熟练的项目,今天突然想起漏了一个,补上了,但想到还没对应的博客,那就写一个简单的
肖哥哥
2018/08/02
2.8K0
selenium-java web自动化测试工具
全国大学生软件测试大赛Web应用大赛常用测试语句
FGGIT
2024/10/15
1020
《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
  在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。
北京-宏哥
2021/09/26
9410
《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
《手把手教你》系列技巧篇(二十一)-java+ selenium自动化测试-浏览器窗口的句柄(详细教程)
  今天本来就要分享和讲解三大延时等待的,但是在写作过程中发了问题,会用到这一个知识点,于是就提前介绍一下,以便后边用到了可以更好的理解和掌握。本文就是要介绍如何获得浏览器窗体的句柄或者叫编号,为后面的driver实例在多个窗体之间切换做准备。
北京-宏哥
2021/09/06
1.3K0
Java自动化测试(特殊元素处理 25)
下拉框 找到下拉框所在元素 导入import org.openqa.selenium.support.ui.Select; 新建Select对象 通过getOptions拿到全部选项内容 通过selectByIndex或者selectByValue或者selectByVisibleText分别以index,value,text来选择 WebElement selectElement = driver.findElement(By.id("modules")); Select select = new Sel
zx钟
2020/09/04
4470
【测试篇】探秘自动化测试函数:解锁高效测试新路径
当然如果这里的元素是一个属性那么就要使用:getAttribute("属性名称")进行获取属性的操作;
用户11288949
2025/03/26
470
【测试篇】探秘自动化测试函数:解锁高效测试新路径
【测试】Selenium Grid测试
下载http://selenium-release.storage.googleapis.com/index.html
瑞新
2020/07/07
1.1K0
【测试】Selenium Grid测试
Selenium WebDriver脚本Java代码示例
本篇文章将介绍如下内容: WebDriver代码 Selenium定位UI元素 Selenium常用命令 Get命令 --Get Commands 导航(跳转)命令-Navigate commands Close和Quite关闭和退出浏览器窗口 切换内嵌框架Frame 切换到弹出框
软测小生
2019/09/04
5.4K0
Selenium WebDriver脚本Java代码示例
selenium2java爬虫示例
本人在使用图灵机器人的过程中,需要丰富一下机器人知识库里面的笑话、段子等内容,就得去网上爬一些内容下来,经过尝试终于成功了,效果一般般,主要原因是添加的知识条目审核不通过,还有就是爬虫次数限制,暂时放弃了,以后打算用接口做爬虫,selenium爬起来很容易出错,浏览器加载太慢了,一旦次数太多很耗时。分享一下代码,供大家参考。
FunTester
2020/04/03
3490
自动化测试selenium在小公司的成功实践
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
1.5K0
自动化测试selenium在小公司的成功实践
推荐阅读
相关推荐
《手把手教你》系列技巧篇(二十二)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换上卷(详细教程)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验