突破自动化测试瓶颈!WEB自动化测试鼠标与键盘操作最佳实践分享

news/2025/2/4 17:51:10/

目录

引言

鼠标操作方法

说明

实例化对象

方法

实例1

实例2 拖拽

注意

键盘操作

说明

Keys类

常用的键盘操作

案例

 结语


引言

在现代软件测试中,WEB自动化测试已经成为了必不可少的一部分,然而,面对各种繁琐的测试场景,如何通过最佳实践提高测试效率和测试质量仍然是一个挑战。

于是,我为大家准备了一份内容丰富的鼠标和键盘操作最佳实践分享指南,涵盖了各种常见的测试用例和解决方案,是您实现自动化测试提升的不二选择。

通过这个指南,您将能够深入了解WEB自动化测试的关键技巧和方法,掌握鼠标和键盘操作的技能,让您的测试更加智能、高效。如果您想要突破自动化测试的瓶颈,那么不妨点击查看这个指南,一起开启WEB自动化测试的新篇章吧!

鼠标操作方法

说明

  • 在Selenium中将操作鼠标的方法封装在ActionChains类中

实例化对象

action = ActionChains(driver)

方法

  1. context_click(element).perform( ) 右击 --> 模拟鼠标右键点击效果
  2. double_click(element).perform( ) 双击 --> 模拟鼠标双击效果
  3. drag_and_drop(source, target).perform( ) 拖拽 --> 模拟鼠标拖动效果
  4. move_to_element(element) .perform( ) 悬停 --> 模拟鼠标悬停效果
  5. perform( ) 执行 --> 此方法用来执行以上所有鼠标操作

为了更好的学习其他方法,先学习perform()执行方法,因为所有的方法都需要执行才能生效

提示

  • selenium框架中虽然提供了右击鼠标方法,但是没有提供选择右击菜单方法,可以通过发送快捷键的方式解决。(经测试,谷歌浏览器不支持)

实例1

  • 连续操作不了,得一个功能一个功能操作
  • 这个里没有拖拽方法(需要能拖拽的页面才能实现)
# 右击 双击 移动到按钮上
from selenium import webdriver
from time import sleepfrom selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import Bydriver = webdriver.Firefox()
url = r"https://www.sogou.com/"
driver.get(url)# 实例化ActionChains对象
action = ActionChains(driver)
# context_click(element).perform( )    右击 --> 模拟鼠标右键点击效果
context = driver.find_element(By.ID, "query")
action.context_click(context).perform()
# 传入快捷键p 粘贴
# context.send_keys("p")
# 模拟ctrl+v 粘贴
context.send_keys(Keys.CONTROL, 'v')
sleep(3)
context.submit()
sleep(3)# 后退
driver.back()# double_click(element).perform( )     双击 -->  模拟鼠标双击效果
click_two = driver.find_element(By.ID, "query")
click_two.send_keys("双击")
action.double_click(click_two).perform()
sleep(3)# move_to_element(element) .perform( )     悬停 -->   模拟鼠标悬停效果
more = driver.find_element(By.CLASS_NAME, "m-arr")
action.move_to_element(more).perform()sleep(3)
driver.quit()

实例2 拖拽

action = ActionChains(driver)
# 获取源元素
source = driver.find_element(By.CSS_SELECTOR, "#div1")
# 获取目标元素
target = driver.find_element(By.CSS_SELECTOR, "#div2")
sleep(2)
action.drag_and_drop(source,target).perform()# 扩展 —— 偏移量
action.drag_and_drop_by_offset(source,xoffset=360,yoffset=180).perform()# 暂停2
sleep(2)

注意

  • 鼠标操作必须在调用 perform( ) 后才能执行

键盘操作

如何实现复制、粘贴的操作?

说明

  1. 模拟键盘上一些按键或组合键的输入,如:Ctrl+C、Ctrl+V
  2. Seleuim中把键盘的按键都封装在Keys类中

Keys类

  • 导包:

    from selenium.webdriver import Keys
    

常用的键盘操作

send_keys(Keys.BACK_SPACE)删除键(BackSpace)
send_keys(Keys.SPACE)空格键(Space)
send_keys(Keys.TAB)制表键(Tab)
send_keys(Keys.ESCAPE)回退键(Esc)
send_keys(Keys.ENTER)回车键(Enter)
send_keys(Keys.CONTROL, 'a')全选(Ctrl+A)
send_keys(Keys.CONTROL, 'c')复制(Ctrl+C)

案例

需求:打开页面,完成以下操作
1.输入:admin1,暂停两秒,删除1
2.全选:admin,暂停2秒
3.复制:admin,暂停2秒
4.粘贴到密码框
from selenium import webdriver
from time import sleepfrom selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import Bydriver = webdriver.Firefox()
url = r"https://www.sogou.com/"
driver.get(url)# 学习使用键盘操作
# 需求:打开页面,完成以下操作
# 1.输入:admin1,暂停两秒,删除1
context = driver.find_element(By.ID, "query")
context.send_keys("admin1")
sleep(2)
context.send_keys(Keys.BACK_SPACE)
# 2.全选:admin,暂停2秒
context.send_keys(Keys.CONTROL, 'A')
sleep(2)
# 3.复制:admin,暂停2秒
context.send_keys(Keys.CONTROL, 'C')
sleep(2)
context.send_keys(Keys.BACK_SPACE)
# 4.粘贴到密码框
context.send_keys(Keys.CONTROL, 'V')
sleep(1)
driver.quit()

 ------------------------------------

 获取方式:留言【软件测试学习】即可

 结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!


http://www.ppmy.cn/news/98606.html

相关文章

一、stable diffusion的发展史

一、stable diffusion的发展史 本文目标:学习交流 对于熟悉SD的同学,一起学习和交流使用过程中的技巧和心得。 帮助新手 帮助没有尝试过SD但又对它感兴趣的同学快速入门,并且能够独立生成以上效果图。 1.发展史介绍: 2015年的时候…

【MySQL】索引与事务

索引: 什么是索引?为什么要⽤索引 为了提高查询效率而使用的一种数据结构把数据组织起来; 例如生活中的字典:声母,韵母,声调。 创建索引:自动创建的主键约束,唯一约束&#xf…

yolov5

一、yolov5中utils是什么 在YOLOv5中,utils是一个包含各种辅助函数和工具的模块,用于处理图像、标签、模型等。这些函数和工具包括数据加载、数据增强、模型构建、模型训练、模型评估、结果可视化等。在YOLOv5的训练和推理过程中,utils模块扮…

【计算机网络:自顶向下方法】(四)网络层 (IPV4 | IPV6 | 路由算法 )

【计算机网络:自顶向下方法 第7版 | 中科大 】 第4章 网络层 : 数据平面 4.1 导论 网络层服务 网络层功能: 转发: 将分组从路由器 的输入接口转发到合适 的输出接口 (局部)路由: 使用路由算法来 决定分组从发…

lazada商品评论数据接口,支持多站点

可以使用Lazada的开放平台API来获取商品评论数据。以下是使用API获取Lazada商品评论数据的基本步骤: 1.注册Lazada开发者账号,创建API密钥和访问令牌。 2.调用Lazada Open API中的Product Review API,提供商品的SKU或Seller SKU参数&#x…

OpenCV中的图像处理3.9(六)轮廓线特征与属性

目录 3.9 OpenCV中的轮廓线3.9.1 轮廓线:入门目标什么是轮廓线?如何绘制轮廓线?轮廓线逼近法 3.9.2 轮廓线的特征1. 矩2. 轮廓线面积3. 轮廓线周长4. 轮廓逼近5. 凸面体6. 检查凸性7. 边界矩形8. 最小包围圈9. 拟合椭圆10. 拟合直线 3.9.3 轮…

通过Java Reflection实现编译时注解处理

通过Java Reflection实现编译时注解处理 一、简介1. Java注解2. 注解的分类3. 注解的作用 二、Java反射机制1. Java反射2. 反射的作用3. 反射的核心类和方法 三、编译时注解处理概述1. 编译时注解处理器的作用2. 注解处理器的要求和实现方式 四、通过Java Reflection实现编译时…

实验二十一、积分运算电路的输出波形分析

一、题目 利用 Multisim 分析图1所示两个积分运算电路的输出波形,输入电压为 200 Hz、幅值为 1 V 的方波信号。 图 1 图1\,\, 图1 二、仿真电路 在 Multism 中搭建图1所示的两个电路,如图2所示。为了防止电路中的直流增益过大,故在电容上…