Selenium自动化测试 —— 模拟鼠标键盘的操作事件

news2025/1/19 3:11:57

鼠标操作事件

  在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击、双击、拖动等操作,这些操作包含在ActionChains类中。

ActionChains类中鼠标操作常用方法:

首先导入ActionChains类: from selenium.webdriver.common.action_chains import ActionChains

context_click():右击
double_click():双击
drag_and_drop():拖动
move_to_element():鼠标移动到一个元素上
click_and_hold():按下鼠标左键在一个元素上(长按)

常用的链条命令

pause():停留、click():点击、release():释放、perform():执行

ActionChains(driver).move_to_element(元素对象).pause(秒).click(元素对象).release(元素对象).perform()

代码如下:

import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
 
current_path = os.path.dirname(os.path.abspath(__file__))  # 当前路径
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe')  # driver路径
driver = webdriver.Chrome(executable_path=driver_path)  # Firefox,Ie等
 
driver.get('https://www.baidu.com/')  # 打开网站
 
# 右击操作 context_click()
element_obj = driver.find_element(By.XPATH,'//input[@id="su"]')  # 右击百度一下
mouse_obj = ActionChains(driver)
mouse_obj.context_click(element_obj).perform()  # perform执行操作
 
# 点击操作 click()
element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]')  
mouse_obj = ActionChains(driver)
mouse_obj.click(element_obj).release(element_obj).perform()  # 点击hao123
 
# 长按操作 click_and_hold()
element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]')  
mouse_obj = ActionChains(driver)
mouse_obj.click_and_hold(element_obj).pause(10).release(element_obj).perform()  #长按 hao123 10秒后松开
 
# 鼠标移动到一个元素  move_to_element()
e1 = driver.find_element(By.XPATH,'//a[@name="tj_briicon"]')  
e2 = driver.find_element(By.XPATH,'//a[@name="tj_zhidao"]') 
mouse_obj = ActionChains(driver)
mouse_obj.move_to_element(e1).pause(3).click(e2).release(e2).perform()  # 链条命令  移动到 更多 元素上停顿3秒,然后点击 知道 元素

键盘操作事件

在实际的web测试工作中,需要配合键盘按键来操作,webdriver的keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl_a,Ctrl+c/v等。

前置条件:导入Keys类

from selenium.webdriver.common.keys import Keys

页面上的键盘操作(从搜索框中按两下tab键)

driver.find_element(By.XPATH,'//input[@id="kw"]').click()
ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform()

组合键操作 ctrl+a、ctrl+c、ctrl+v

driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python')
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()

备注:

1、在使用修饰键的时候需要key_down()和key_up()方法

  修饰键包含ctrl、alt、shift

2、类似alt+F4 ctrl+alt+delete不能使用,这里的组合键只针对网页生效的

代码如下:

import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
 
current_path = os.path.dirname(os.path.abspath(__file__))  # 当前路径
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe')  # driver路径
driver = webdriver.Chrome(executable_path=driver_path)  # Firefox,Ie等
 
driver.get('https://www.baidu.com/')  # 打开网站
 
# 页面上的键盘操作   从搜索框中按两下tab键
driver.find_element(By.XPATH,'//input[@id="kw"]').click()
ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform()
 
# 组合键操作 ctrl+a、ctrl+c、ctrl+v、shift+a
# 修饰键 ctrl、alt、shift
# ctrl+a ==> 按下ctrl、按下a、松开a、松开ctrl
driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python')
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
 
# 备注:系统级别的组合键不能使用,因为这里的组合键都是只针对网页生效的
 

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

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

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

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

相关文章

基于Springboot的社区医院管理服务系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的社区医院管理服务系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

关于神舟-战神TA5NS系统重装问题

加装固态卡在log处无法开机问题 下面是我的步骤 1.按f7选择pe安装系统,然后发现卡在战神log处不转动 2.下载驱动 TA5NS驱动地址 下载RAID驱动(如果没有私信我,我网盘里有),拷到u盘中,然后进入pe系统里面…

Python----Pandas

目录 Series属性 DataFrame的属性 Pandas的CSV文件 Pandas数据处理 Pandas的主要数据结构是Series(一维数据)与DataFrame(二维数据) Series属性 Series的属性如下: 属性描述pandas.Series(data,index,dtype,nam…

轨道交通故障预测与健康管理PHM系统的应用

轨道交通是现代城市中不可或缺的交通方式,它为人们提供了快速、高效和可靠的出行方式。然而,由于轨道交通系统的复杂性和高负荷运行,设备故障和运营中断问题时有发生。为了提高轨道交通系统的可靠性和安全性,故障预测与健康管理&a…

Java的TPC通信

TPC通信-快速入门 TPC通信-客户端开发 TPC通信-服务端开发 TPC通信-多发多收 客户端 服务端 TPC通信-支持与多个客户端同时通信 服务端 独立线程对象

看懂lscpu的输出

文章目录 1. lscpu1.1 Architecture1.2 逻辑核心数1.3 缓存1.4 CPU型号1.5 NUMA架构1.5.1 CPU多核架构1.5.2 多CPU Socket架构 2. cat /proc/cpuinfo2.1 关键字段 1. lscpu 通过lscpu查看当前系统的CPU信息。 [hadoopserver3 ~]$ lscpuArchitecture: x86_64 …

使用晶振遇到的两个问题

并联电阻的问题 在一些方案中,晶振并联1MΩ电阻时,程序运行正常,而在没有1MΩ电阻的情况下,程序运行有滞后及无法运行现象发生。 原因分析: 在无源晶振应用方案中,两个外接电容能够微调晶振产生的时钟频率…

Spring容器启动过程中的自定义操作插口汇总

目录标题 PostConstruct注解EventListener方式InitializingBean的afterPropertiesSet方法实现ApplicationRunner接口重写run方法实现AplicationContextAware接口重写setApplicationContext实现ServletContextListener接口contextInitialized方法实现ServletContextAware接口set…

性能测试流程、指标及常见问题!

1.介绍性能测试流程 a.性能需求分析(评审) 基于接口或者场景(全链路)的性能测试指标,一般是tps(每秒事务数,这里都是通过的事务)及art(平均响应时间) b.了解…

基于ssm vue的风景文化管理平台源码和论文

摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,基于vue的木里风景文化管理平台也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对…

2-1、地址加法器CS:IP

语雀原文链接 文章目录 1、CPU组成2、通用寄存器16位寄存器的存储16位寄存器兼容8位word 和 byte进位问题 3、地址加法器不同的段地址和偏移地址表示同一个物理地址偏移地址的范围一个段的起始地址一定是16的倍数 4、CS:IPCS IP工作过程jmp修改CS:IP 5、DS和[address]DS和[add…

四.多表查询

多表查询 1.一个案例引发的多表连接1.1案例说明1.2 笛卡尔积(或交叉连接)的理解1.3案例分析与问题解决 2.多表查询分类讲解分类1:等值连接vs非等值连接分类2:自连接vs非自连接分类3:内连接vs外连接 3.SQL99语法实现多表…

记录华为云服务器(Linux 可视化 宝塔面板)-- Nginx配置出现500错误记录

文章目录 1、路由配置,访问显示500如有启发,可点赞收藏哟~ 1、路由配置,访问显示500 错误如图显示500 解决思路如下 1、先查看错误日志 错误日志存放位置 提示 /login配置的文件有问题 开始配置如下图 修改前 修改后(即在/l…

题目:小明的彩灯(蓝桥OJ 1276)

题目描述&#xff1a; 解题思路&#xff1a; 一段连续区间加减&#xff0c;采用差分。最终每个元素结果与0比较大小&#xff0c;比0小即负数输出0。 题解&#xff1a; #include<bits/stdc.h> using namespace std;using ll long long; const int N 1e5 10; ll a[N],…

深度学习之网络优化与正则化

视频链接&#xff1a;7.1 神经网络优化的特点_哔哩哔哩_bilibili 神经网络优化的特点 网络优化的难点 &#xff08;1&#xff09;网络结构差异大&#xff1a;不同模型之间的结构差异大——没有通用的优化算法、超参数多 &#xff08;2&#xff09;非凸优化问题&#xff1a;…

gitee上合并分支

点击pull requests 这个合并代码的位置找了半天没有找到&#xff0c;最后还是搜到才知道

华为云软件冗余依赖智能消除技术Slimming取得重大突破,相应文章已被软工顶会ICSE 2024录用

由于构建工具对软件库的自动化配置管理&#xff0c;使得现代软件项目在版本演化的过程中&#xff0c;引入大量的第三方软件库&#xff0c;依赖树结构日益臃肿。然而&#xff0c;实际上很多引入的软件库并未被真正使用。臃肿的依赖在资源受限的设备上将严重影响代码的性能、增加…

C++智能指针及简单实现

C智能指针 堆内存、栈内存与静态内存静态内存栈内存堆内存 动态内存管理new、delete运算符智能指针实现智能指针 shared_ptr智能指针的线程安全问题解决 unique_ptrweak_ptr循环引用 思维导图本模块思路 动态内存管理 - cppreference.com 堆内存、栈内存与静态内存 静态内存 …

会声会影2024购买多少钱 会声会影在哪里购买

掌握视频编辑技术&#xff0c;能为我们的工作和生活带来很多帮助。例如&#xff1a;将我们精心编辑的视频&#xff0c;上传到抖音、快手等平台进行变现&#xff1b;通过天马行空的视频创意&#xff0c;摇身一变成为B站up主。因此&#xff0c;拥有一款像会声会影这样的视频编辑软…

ATFX汇市:澳洲联储12月决议维持基准利率不变,AUDUSD短线大跌

ATFX汇市&#xff1a;12月5日&#xff0c;澳洲联储利率决议结果显示&#xff0c;将现金利率目标维持在4.35%不变 金融衍生品结算余额的支付利率维持在4.25%不变&#xff0c;符合市场预期。政策声明中提到&#xff1a;更加确定通货膨胀将会在合理的时间内返回目标&#xff1b;劳…