软件测试/测试开发丨Selenium 高级控件交互方法

一、使用场景

使用场景对应事件
复制粘贴键盘事件
拖动元素到某个位置鼠标事件
鼠标悬停鼠标事件
滚动到某个元素滚动事件
使用触控笔点击触控笔事件(了解即可)
  • www.selenium.dev/documentati…

二、ActionChains解析

  • 实例化类ActionChains,参数为driver实例。
  • 中间可以有多个操作。
  • .perform()代表确定执行。
ActionChains(self.driver).操作.perform()

三、键盘事件

  • 按下、释放键盘键位
  • 结合send_keys回车

3.1、键盘事件——使用shift键实现大写

  • mouse = ActionChains(self.driver):实例化ActionChains类
  • mouse.key_dowm(keys.SHIFT,ele):按下SHIFT键
  • mouse.send_keys(“selenium”):输入字母自动变成大写
  • mouse.perform()

3.2、键盘事件——输入后回车

  • 方法1:.send_keys(Keys.ENTER)
  • 方法2:ActionChains().send_keys(Keys.ENTER).perform()
self.driver.find_element(By.XPATH, '//input[@aria-label="搜索"]').send_keys(Keys.ENTER)
self.action.send_keys(Keys.ENTER).perform()

3.3、键盘事件-复制粘贴

  • 多系统兼容

    • mac 的复制按钮为 COMMAND
    • windows 的复制按钮为 CONTROL
  • 左箭头:Keys.ARROW_LEFT

  • 按下COMMAND或者CONTROL: key_down(cmd_ctrl)

  • 按下剪切与粘贴按钮: send_keys("xvvvvv")

四、鼠标事件

4.1、双击

  • double_click(元素对象): 双击元素
    def test_double_click(self):
        self.driver.get("https://vip.ceshiren.com/#/ui_study/frame")
        ele01 = self.driver.find_element(By.XPATH, '//button[@class="el-button el-button--primary"]')
        self.action.double_click(ele01).perform()
        time.sleep(3)

4.2、鼠标事件-拖动元素

  • drag_and_drop(起始元素对象, 结束元素对象): 拖动并放开元素
    def test_drag_and_drop(self):
        self.driver.get("https://vip.ceshiren.com/#/ui_study/action_chains")
        ele01 = self.driver.find_element(By.ID, "item1")
        ele02 = self.driver.find_element(By.ID, "item3")
        self.action.drag_and_drop(ele01, ele02).perform()

4.3、 鼠标事件-悬浮

  • move_to_element(元素对象): 移动到某个元素
    def test_move_to_element(self):
        self.driver.get('https://vip.ceshiren.com/#/ui_study/action_chains2')
        ele01 = self.driver.find_element(By.XPATH, '//div [@data-v-3e28c77a and @class="title"]')
        self.action.move_to_element(ele01).perform()
        self.driver.find_element(By.XPATH, '//*[contains(text(),"管理")]').click()

五、滚轮/滚动操作

  • 滚动到元素
  • 根据坐标滚动

注意: selenium 版本需要在 4.2 之后才支持滚动操作

5.1、滚动到元素

  • ActionChains().scroll_to_element().perform()
    def test_scroll_to_element(self):
        self.driver.get('https://ceshiren.com/')
        ele01 = self.driver.find_element(By.PARTIAL_LINK_TEXT, "jmeter分布式压测创建多节点报错")
        self.action.scroll_to_element(ele01).perform()
        self.action.scroll_by_amount(0, 100).perform()   
        ele01.click()

5.2、根据坐标滚动

  • ActionChains.scroll_by_amount(横坐标,纵坐标)
    def test_scroll_by_amount(self):
        self.driver.get('https://ceshiren.com/')
        self.action.scroll_by_amount(0, 1000).perform()

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bootstrap5实现宠物商店网站 Cat-Master

一、需求分析 宠物商店网站是指专门为宠物商店或宠物用品商家而建立的在线平台。这种网站的功能通常旨在提供以下服务: 产品展示:宠物商店网站通常会展示宠物食品、玩具、床上用品、健康护理产品等各种宠物用品的图片和详细信息。这样,潜在的…

IP2312U_VSET 5V 2A 单节锂电池同步开关降压充电IC

IP2312U是一款5V输入,支持单节锂电池同步开关降压充电管理的IC。 IP2312U集成功率MOS,采用同步开关架构, 使其在应用时仅需极少的外围器件,并有效减小整体方案的尺寸,降低BOM 成本。 IP2312U的升压开关充电转换器工作频…

PromptCast:基于提示学习的时序预测模型!

目前时序预测的SOTA模型大多基于Transformer架构,以数值序列为输入,如下图的上半部分所示,通过多重编码融合历史数据信息,预测未来一定窗口内的序列数值。 受到大语言模型提示工程技术的启发,文章提出了一种时序预测新…

未来人工智能技术发展趋势

近年来,人工智能技术在全球范围内得到了快速的发展和广泛的应用。随着技术的不断进步和创新,未来人工智能技术将会呈现出哪些发展趋势呢?本文将会从以下几个方面进行分析。 1. 多模态融合 未来的人工智能技术将会更加注重多模态数据的融合&…

如何正确安装Axure插件?详细步骤分享

产品经理在使用Axure导出html文件时,如果选择“完成后打开浏览器”,浏览器往往无法识别。此时,我们需要使用Axure官方谷歌浏览器插件直接访问浏览器中的本地html项目,否则我们需要上传到AxureCloud或使用软件本身的预览功能。接下…

玩转Mysql 三(权限管理)

一、用户管理 1、登录MySQL服务器 语法示例: mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句" 详细命令中参数说明: -h参数 后面接主机名或者主机IP,hostname为主机,hostIP为主机…

Allegro如何进行四层板板层设计

Allegro如何进行四层板板层设计 板层设计说明 在进行多层板设计时我们画好PCB板框后,都要进行板层的设计。这里就以最简单的4层板为例为大家举例说明。 板层设置 点击“Setup”->“Cross Section Editor”如下图所示: 也可以直接点击工具栏进入…

期货日数据维护与使用_日数据维护_模块运行演示

写在前面: 本文默认已经创建了项目,如果不知道如何创建一个空项目的,请参看以下两篇博文 PyQt5将项目搬到一个新的虚拟环境中 https://blog.csdn.net/m0_37967652/article/details/122625280 python_PyQt5开发工具结构基础 https://blog.cs…

C++矩阵例题分析(3):螺旋矩阵

一、审题 时间限制:1000ms 内存限制:256MB 各平台平均AC率:14.89% 题目描述 输出一个n*n大小的螺旋矩阵。 螺旋矩阵的样子: 输入描述 共一行,一个正整数n,表示矩阵变长的长度…

vue+springboot项目上传部署tomcat

下载及安装Tomcat 进入tomcat官网,Tomcat官网 选择需要下载的版本,点击下载下载路径一定要记住,并且路径中尽量不要有中文 下载后是压缩包 .zip,解压后 tomcat系统各个文件夹目录是什么意义: bin:放置的是…

吉林大学19、21级计算机学院《计算机网络》期末真题试题

一、21级(考后回忆) 一、不定项选择(一共10个选择题,一个两分,选全得满分) 不定项:可以选择1~4个 考点有: ①协议、服务 ②码分多路复用通过接受码片序列,求哪个站点发送…

AI小蜜批量写作助手:多级指令,插件,GPTs满足不同写作需求

为什么会开发这个脚本? 爆文项目的核心是矩阵怼量 具体怎么做这里介绍很清楚了: AI爆文撸流量主保姆级教程3.0脚本写作教程(解放双手) 我在刚做爆文项目时候,都是手动操作,复制指令,组合指令…

2024-01-04 用llama.cpp部署本地llama2-7b大模型

点击 <C 语言编程核心突破> 快速C语言入门 用llama.cpp部署本地llama2-7b大模型 前言一、下载llama.cpp以及llama2-7B模型文件二、具体调用总结 前言 要解决问题: 使用一个准工业级大模型, 进行部署, 测试, 了解基本使用方法. 想到的思路: llama.cpp, 不必依赖显卡硬件…

CMake入门教程全导航

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1.CMake简介2.编程小鱼酱的课程导览2.1拥有这个专栏&#xff0c;您将获得什么…

在Uniapp中使用Echarts创建可视化图表

在uniapp中可以引入echarts创建数据可视化图表。 1. 安装Echarts 使用npm安装echarts插件&#xff0c;命令如下&#xff1a; npm install echarts --save2. 引入Eharts 在需要使用Echarts的页面引入&#xff1a; import *as echarts from echarts3. 创建实例 创建画布元素…

私有云平台搭建openstack和ceph结合搭建手册

OpenStack与云计算 什么是云&#xff1f; 如何正确理解云&#xff0c;可以从以下几个方面。 云的构成。 用户&#xff1a;对用户而言是透明无感知的&#xff0c;不用关心底层构成&#xff0c;只需要知道利用云完成自己任务即可。 云提供商&#xff1a;对云资产管理和运维。 云…

c# windows10大小端试

测试代码&#xff1a; unsafe public void ceshi() {byte[] by BitConverter.GetBytes(0x12345678);Debug.WriteLine(" byte[0] 0x" by[0].ToString("x2"));Debug.WriteLine(" byte[1] 0x" by[1].ToString("x2"));Debug.WriteLi…

一文讲透SPSS相关性分析结果怎么看?

推荐采用《SPSS统计分析入门与应用精解&#xff08;视频教学版&#xff09;》 杨维忠、张甜 清华大学出版社“5.1 双变量相关分析” 的解答。 本节内容选自《SPSS统计分析入门与应用精解&#xff08;视频教学版&#xff09;》 杨维忠、张甜 清华大学出版社“5.1 双变量相关分析…

基于Python+Django,这款在线图书管理系统真的很清爽!

学习过程中&#xff0c;遇到问题可以咨询作者 基于PythonDjango&#xff0c;打造一款在线图书管理系统&#xff0c;真的很清爽&#xff01; 功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前…

记uniapp总动态:style无法用带参数的computed属性问题

问题描述&#xff1a; v-for里面的组件呢&#xff0c;我要根据不同的item配置不同的style,于是有了这样的写法 <template><view class"weeks-item" v-for"(day,dayIndex) in item" :key"dayIndex"><view :style"bgStyle(d…