web自动化的三大切换
元素有时在另一个页面里查找元素却报错找不到元素,可能是因为要查找的元素不在原来所在的页面。
一.iframe切换
有些定位元素定位不到,是因为元素在新的iframe页面里,但是driver还停留在原来的iframe里

1.切换到新的页面
webDriver.switchTo().frame(elementframe);
2. 回到上一级页面
页面返回上一级页面时,定位的元素在上一级的frame里,需要先将frame返回到上一级,才能找到元素
webDriver.switchTo().parentFrame();
3.回到默认页面
页面有时没有返回上一级而是直接返回首页(主页面),在首页面进行元素操作,frame需要返回到首页,元素才能被找到
webDriver.switchTo().defaultContent();
二.Alert切换
页面需要切换到alert才能定位alert上的元素

1.得到alert
Alert alert=webDriver.switchTo().alert();
2.获取alert的提示信息
alert.getText()
3.Alert确认按钮
alert.accept();
4.Alert取消按钮
alert.dismiss();
三.Window切换
当点击一个超链接元素时,可能在当前窗口加载新页面,也可能加载一个新窗口加载页面。如果打开一个新的窗口,但是driver还停留在原来的窗口,需要通过切换driver的焦点才能定位到新窗口的元素。
1.根据传入新的句柄切换到新的窗口
webDriver.switchTo().window(handle)
2.找到新窗口的句柄
(1)句柄
窗口的标识,唯一,是一串字符串
(2)获取窗口句柄
driver.getWindowHandle(); //获取当前操作窗口的句柄
driver.getWindowHandles(); //获取测试时打开的所有窗口句柄
(3)获取新窗口的句柄
webDriver.get("https://www.baidu.com");
webDriver.findElement(By.partialLinkText("地图")).click();
//获取打开所有窗口的句柄,获取到的结果无序,用增强for循环
Set<String> handleafter=webDriver.getWindowHandles();
for (String handle:handleafter){
//已知新窗口的标题,如果当前窗口的标题和新窗口标题相等,退出
if (webDriver.getTitle().equals("百度地图")){
break;
//否则,切换窗口再继续循环
}else {
webDriver.switchTo().window(handle);
}
}
//根据当前窗口的title验证是否切换到新窗口
System.out.println(webDriver.getTitle());
web自动化的三大切换的更多相关文章
- web自动化之三大等待
这个假期有些长,长到忘记了要学习,要找工作,好吧,在我每天无休止的追着偶像剧时,我确实没有负罪感,在听了小祥大佬的分享后,我连睡午觉都被吓醒.大佬跟我同一个班,在大厂工作,每天还抽时间学习,作业也没落 ...
- web自动化的三大等待
由于web网页打开后需要时间进行数据的传送,页面的渲染,所以我们在写web自动化脚本的时候,需要等待它加载完所有的页面元素,我们才进行操作或点击.同时这种等待也是为了提高脚本的稳定性. seleniu ...
- web自动化 -- 浏览器窗口切换
切换浏览器窗口 示例: from time import sleep from selenium import webdriver from selenium.webdriver.support.wa ...
- Web自动化之iframe切换
一.如何判断元素是否在iframe中 选中要操作的元素,通过下方的父节点查看是否存在iframe,存在则元素在iframe,需要切换至iframe中进行元素的操作 二.iframe切换方式一 1.方式 ...
- 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...
- python selenium + web自动化,切换到新的窗口,元素定位不到?
问题描述: 自动化由首页切换到分页面,打开了一个新的窗口,不过,定位不到这个窗口的元素,通过开发者工具是可以查到这个元素的 原因是: 因为窗口句柄还停留在上一个页面,所以导致无法定位元素.报错 &qu ...
- 爬虫实战:爬虫之 web 自动化终极杀手 ( 上)
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:陈象 导语: 最近写了好几个简单的爬虫,踩了好几个深坑,在这里总结一下,给大家在编写爬虫时候能给点思路.本次爬虫内容有:静态页面的爬 ...
- web自动化工具-开篇
web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Web自动化框架LazyUI使用手册(1)--框架简介
作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...
随机推荐
- TCP协议的三次握手-4次挥手
TCP的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行.主要步骤如下: 连接开始时,连接建立方(Client)发送SYN包,并包含了自己的初始序号a: 连接接受方( ...
- 【译】MongoDB EF Core 提供程序:有什么新功能?
原文 | Rishit, Luce 翻译 | 郑子铭 这是 Rishit Bhatia 和 Luce Carter 的客座文章.Rishit 是 MongoDB 的高级产品经理,专注于 .NET 开发 ...
- GPU虚拟化技术简介:实现高性能图形处理的灵活部署
本文分享自天翼云开发者社区<GPU虚拟化技术简介:实现高性能图形处理的灵活部署>,作者:z****n GPU虚拟化技术是一项重要的创新,通过将物理GPU划分为多个虚拟GPU,实现多用户共享 ...
- Nacos 从入门到精通-手把手教会你
Nacos 使用教程 Nacos 是阿里巴巴开源的动态服务发现.配置管理和服务管理平台,旨在帮助您更容易地构建.交付和管理微服务平台.它集成了服务注册与发现.动态配置管理.动态 DNS 服务和服务及元 ...
- 你的边比较松弛:最短路的 Bellman-Ford 和 SPFA 方法
Dijkstra 的局限性 在带权图的最短路径问题中,我们的目标是从一个起点出发,找到到达其他所有节点的最短路径.无论是交通导航中的最短耗时路线,还是金融网络中的最小成本路径,这一问题的核心始终是如何 ...
- 【VMware vSphere】扩容或缩减 vCenter Server 的磁盘空间大小。
我们在部署 vCenter Server 时,根据不同环境的情况,可以选择不同的部署选项,比如环境中的主机可能运行了 100 个,或者虚拟机运行了 1000 个,此时按照官方推荐的选择"小型 ...
- Thymeleaf 在页面中直接显示内容
Thymeleaf 在页面中直接显示内容 一般情况下 Thymeleaf 模板要输出变量需要在某个标签中(如<div>.<span>)写th:text等属性来实现.但有时我 ...
- 记一次 Mybatis 一级缓存清理无效引起的源码走读
今天对象在学习 Mybatis 时发现 org.apache.ibatis.session.SqlSession 对象的 clearCache() 方法并不能清理一级缓存, 同一 session 下相 ...
- Deepseek学习随笔(6)--- API 开发与自动化
获取 API Key 要开始使用 DeepSeek 的 API,你首先需要获取 API Key: 登录 DeepSeek 控制台 . 进入 API 管理 页面,生成 API Key. API 调用示例 ...
- DW004 - ArgoDB介绍
ArgoDB:自主可控.国际领先.一站式满足湖仓集一体化建设的创新型分布式分析数据库 一.产品特点 统一的SQL编译引擎:支持标准SQL,兼容Teradata,Oracle,Db2等方言,应用开发门槛 ...