【selenium】三大切换 iframe 弹窗alert 句柄window 和 鼠标操作

目录

一、iframe

1、切换方式:

1、第一种情况:

2、第二种情况:

方式1:

先找到iframe,定位iframe元素(可以通过元素定位的各种方式:xpath,css等等),用对象接收,再去跳转

方式2:通过frame序号——不推荐⚠️

2、跳转到父级iframe中

3、切换到默认iframe

总结:

二、切换Alert(提示框)

三、切换Window 句柄

四、鼠标操作


一、iframe

当想要定位iframe中的元素时,由于driver的焦点还停留在原页面,我们在iframe新的页面上定位元素时,自然会产生错误:【报错:no such element: Unable to locate element】

所以我们需要将driver的焦点切换到iframe页面中。

java中iframe的三个重载方法

1、切换方式:

1、第一种情况:

frame有具体的name 和 id 属性(id和name的属性值如果是动态变化的数字 就不能使用)

——直接通过id或name属性切换iframe

driver.switchTo().frame("mainFrame");
2、第二种情况:

frame标签本身没有id 和 name 属性 或者 其是动态

方式1:
先找到iframe,定位iframe元素(可以通过元素定位的各种方式:xpath,css等等),用对象接收,再去跳转
WebElement mainFrame = driver.findElementByName("mainFrame");
driver.switchTo().frame("mainFrame");
方式2:通过frame序号——不推荐⚠️
 # 根据需要填入index,这里定位HTML里的第一个
iframe = driver.find_elements_by_tag_name("iframe")[0]  
driver.switch_to.frame(iframe)

2、跳转到父级iframe

如果是顶级iframe,不会有任何变化

driver.switchTo().parentFrame()

3、切换到默认iframe

一般就是最外层网页。当有超过两层以上的iframe嵌套,使用此方法可直接跳到最外层

driver.switchTo().defaultContent()

总结:

iframe往内层iframe进,只能一层层进,跳出去可以直接跳出最外面,iframe是一层一层往里面切

二、切换Alert(提示框)

  1. alert.getText()——获取警告框中的提示信息
  2. alert.accept()——点击确认按钮
  3. alert.dismiss()——取消

alert 操作示例:

alert 页面代码:

<!DOCTYPE html><html><head><title>a.html</title></head><body><input type="text" name=""></body><script type="text/javascript">//confirm(确认到充值么)if(confirm("确认到充值么?")){alert("充值成功")}else{alert("取消充值")}</script>
</html>

alert操作代码:

//得到alert框
Alert alert = driver.switchTo.alert();
//获取内容
System.out.println(alert.getText());
//点击取消
alert.dismiss();
//再次点击确定 可以在alert原来操作的基础上直接再次点击
alert.accept();

三、切换Window 句柄

当我们点击了 a 标签元素时,会触发打开链接页面的事件,有两种情形:

  1. 在当前窗口加载新页面内容

  2. 新建一个窗口加载新页面内容,这种情况在 a 标签有 target="_blank" 时触发

当发生第2种情况时,同iframe类似,我们需要切换窗口

切换方式:

传入要操作窗口的handle句柄 --窗口的标识,唯一,并且是一串字符串来的

句柄(handle):selenium为每一个窗口分配的值,每一次都是不同的

切换方式:

driver.switchTo.window(nameOrHandle);

name一般没人用,Handle句柄,如何获取到窗口的句柄呢:

driver.getWindowHandle();获取当前操作窗口的句柄,返回set集合,无序
driver.getWindowHandles();获取测试时打开的所有窗口句柄

四、鼠标操作

自动化测试时,有些元素不适合直接点击或者进行某些操作时,可以使用Selenium的Actions类(鼠标操作类)来模拟鼠标键盘操作,通过Actions对象可以发起鼠标左键、右键、移动鼠标等操作,最后使用perform方法执行操作。

clickAndHold() //在特定元素上单击鼠标左键(不释放)
release() //在特定元素上释放鼠标左键
doubleClick() //在特定元素上双击鼠标左键
moveToElement() //移动鼠标指针到特定元素
contextClick() //在特定元素上右键单击
dragAndDrop() //拖拽元素perform() //执行具体的操作,前面6个方法都是声明一个操作,只有调用perform()后才会真正执行操作

Actions:  在操作一个页面元素的时候需要一连串的动作配合的时候,可以使用Actions来完成

//鼠标操作类
//创建对象
Actions action = new Actions(driver);
​
actions.clickAndHold(onElement).moveToElement(toElement).release().build().perform();

案例:ZTREE DEMO - drag & drop

拖拽一个元素到另一个元素的位置

   //按住一个元素,移动到另一个元素处,释放
action.clickAndHold(treeDemo_2_span).moveToElement(treeDemo_11_span).release().perform();//拖拽 dragAndDrop(源,目标)  同上面效果一样
action.dragAndDrop(treeDemo_2_span,treeDemo_11_span).perform();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2803111.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Sora模型开启了AI视频模型的新篇章,将引领未来更多领域的创新和应用。

目录 一、Sora模型的工作原理 二、AI视频模型的无限可能性 1.视频编辑和创作 2.游戏和虚拟现实 3.教育和远程协作 4.娱乐和社交媒体 OpenAI最近推出了其首个AI视频模型Sora&#xff0c;这个模型能够生成逼真的视频&#xff0c;具有许多潜在的应用领域。本文将探讨Sora模型…

旅游景点旅行研学门票特产小程序开发

旅游景点旅行研学门票特产小程序开发 旅游线路智能推荐与精心规划&#xff0c;我们为用户提供丰富多样的旅游线路选择&#xff0c;助力您的行程安排更加顺畅无忧。 景点门票在线预订与购买功能&#xff0c;覆盖景区、博物馆、演出等各类门票。告别排队等待&#xff0c;一键操…

揭秘抖音自动评论软件的使用方法和步骤

**一、引言** 随着移动互联网的普及&#xff0c;抖音已经成为了人们日常生活中不可或缺的一部分。为了更好地利用抖音&#xff0c;我们今天就来探讨一下抖音自动评论软件的使用方法和步骤。本文将通过通俗易懂的语言&#xff0c;结合实际操作&#xff0c;帮助大家轻松掌握这一…

(十四)【Jmeter】线程(Threads(Users))之开放模型线程组(Open Model Thread Group)

简述 操作路径如下: 开放模型线程组(Open Model Thread Group) 是 JMeter 5.5 版本中引入的一个新特性,它允许用户创建具有可变负载的负载配置文件。相较于传统的线程组,开放模型线程组提供了更多的灵活性和动态调整的能力。 优点: 灵活性:允许测试人员根据测试需求动…

LED景观照明灯驱动电路串联、并联和恒流3款方案

LED景观照明灯是现代城市照明中常见的一种灯具。为了保证LED景观照明灯的正常工作&#xff0c;需要设计合适的驱动电路。LED景观照明灯的驱动电路可以采用串联、并联或恒流的方式来设计。 首先&#xff0c;串联驱动电路是指将多个LED灯串联在一起&#xff0c;然后接入电源进行…

OR-806A固态继电器SSR光耦,可替代AQW212

OR-806A 固态继电器 VL60V输出端击穿电压光耦 高隔离电压 60 至 600V 输出耐受电压 工业温度范围&#xff1a;-40 to 85℃ 高灵敏度和高速响应 特征 输入和输出之间的高隔离电压 &#xff08;Viso&#xff1a;5000 V rms&#xff09;。 控制低电平模拟信号 高灵敏度和…

Vi/Vim 使用小窍门,如何消除搜索后的关键字高亮

Vim/Vi 基本上是 *nix 世界最受欢迎的编辑器了&#xff0c;不知道为什么&#xff0c;一直以来觉得和 Emacs 比起来&#xff0c;Vim 更加有亲和力。用起来很舒服。 今天就记录一个困扰了我很久的问题。 大家应该都知道&#xff0c;在 Vi 里面如果要搜索某个关键字&#xff0c;…

短剧小程序系统,重塑视频观看体验的科技革命

随着科技的飞速发展&#xff0c;人们对于数字化内容的消费需求也在不断增长。在这个大背景下&#xff0c;短剧小程序作为一种新型的视频观看方式&#xff0c;正逐渐受到大众的青睐。本文将探讨短剧小程序的发展背景、特点以及市场前景&#xff0c;分析其在重塑视频观看体验方面…

flutter开发实战-StreamBuilder使用介绍及实例

flutter开发实战-StreamBuilder使用介绍及实例 StreamBuilder是一个Widget&#xff0c;它依赖Stream来做异步数据获取刷新widget。 一、Stream Stream是一种用于异步处理数据流的机制&#xff0c;它允许我们从一段发射一个事件&#xff0c;从另外一段去监听事件的变化.Strea…

Vulnhub-OSCP

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-07 17:49 CST Nmap scan report for 192.168.1.1 Host is up (0.00052s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.1.…

#LLM入门|Prompt#1.8_聊天机器人_Chatbot

聊天机器人设计 以会话形式进行交互&#xff0c;接受一系列消息作为输入&#xff0c;并返回模型生成的消息作为输出。原本设计用于简便多轮对话&#xff0c;但同样适用于单轮任务。 设计思路 个性化特性&#xff1a;通过定制模型的训练数据和参数&#xff0c;使机器人拥有特…

安卓手机修改 设置永不锁屏 屏幕永不超时 设置自动锁屏时间 从不 无源码修改系统设置 无需反编译

项目需要 。个别手机系统是的 自动锁屏时间 是没有 永不这个选项的&#xff0c;最多是30分钟。 根据需要。借鉴别人代码&#xff0c;修改&#xff0c;实现了可以在无源码 不反编译系统的情况下。实现屏幕用不锁屏&#xff0c;永不超时的需求&#xff0c; 有需要的小伙伴可以私…

Jenkins的使用GIT(4)

Jenkins的使用GIT 20211002 我们使用 Jenkins 集成外部 Git 仓库&#xff0c;实现对真实代码的拉取和构建。在这里&#xff0c;我们选用 Coding/Github/Gitee 等都可以作为我们的代码源 1 生成公钥私钥 首先&#xff0c;我们先来配置公钥和私钥。这是 Jenkins 访问 Git 私有库…

SparkSQL学习03-数据读取与存储

文章目录 1 数据的加载1.1 方式一&#xff1a;spark.read.format1.1.1读取json数据1.1.2 读取jdbc数据 1.2 方式二&#xff1a;spark.read.xxx1.2.1 读取json数据1.2.2 读取csv数据1.2.3 读取txt数据1.2.4 读取parquet数据1.2.5 读取orc数据1.2.6 读取jdbc数据 2 数据的保存2.1…

vue使用luckysheet时报错window.luckysheet.destroy is not a function

这里写自定义目录标题 vue使用luckysheet时报错window.luckysheet.destroy is not a function解决办法 vue使用luckysheet时报错window.luckysheet.destroy is not a function 按照教程 luckysheet教程: link 将需要的资源进行本地引入。 本地预览excel正常&#xff0c;但是放…

Tomcat 学习之 Filter 过滤器

目录 1 Filter 介绍 2 Filter 的生命周期 3 Filter 和 FilterChain 4 Filter 拦截过程 5 FilterConfig 6 Filter 使用 1 Filter 介绍 在 Tomcat 中&#xff0c;Filter 是一种用于拦截请求和过滤响应的组件&#xff0c;可以在请求到达 Servlet 之前或响应离开 Servlet 之后…

视频的语音转成文字字幕?这3个方法让你实现

随着网络的普及&#xff0c;越来越多的学生选择在网上观看辅导视频&#xff0c;以便随时随地学习。然而&#xff0c;整理这些视频中的教学笔记却成为了一个让人头疼的问题。传统的边看边记录的方式不仅费时费力&#xff0c;还容易遗漏重要信息。那么&#xff0c;有没有一种方法…

Spring Boot application.properties和application.yml文件的配置

在Spring Boot中&#xff0c;application.properties 和 application.yml 文件用于配置应用程序的各个方面&#xff0c;如服务器端口、数据库连接、日志级别等。这两个文件是Spring Boot的配置文件&#xff0c;位于 src/main/resources 目录下。 application.properties 示例 …

Jmeter基础(1) Mac下载安装启动

目录 Jmeter下载安装启动下载启动 Jmeter下载安装启动 注意⚠️&#xff1a;使用jmeter需要有java环境 下载 官网下载地址&#xff1a;https://jmeter.apache.org/ 会看到这里有两个版本&#xff0c;那么有什么区别么&#xff1f; Binaries是可执行版&#xff0c;直接下载解…

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图提供一个强大的机制&#xff0c;通过预先计算并将查询结果集存储为物理表来提高查询性能。本教程将使用 DVD Rental Database 数据库作为演示例子&#xff0c;指导你在 PostgreSQL中创建实体化视图。 了解实体化视图 实体化视图是查询结果集的快照&…