Web自动化测试进阶 —— Selenium模拟鼠标操作

2023-09-14 14:42:37

鼠标操作事件

在实际的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()

# 备注:系统级别的组合键不能使用,因为这里的组合键都是只针对网页生效的

今天的分享就到此结束了,大家还有什么不懂的可以评论区下提问哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下哈

更多推荐

springboot和vue:一、cs/bs区别+maven介绍与其仓库配置

cs/bs的区别:​​C/S:1.交互性强,具有安全访问模式,网络流量低,响应速度快,2.因为客户端负责大多数业务逻辑和UI演示,所以也被称为胖客户端。3.C/S结构的软件需要针对不同的操作系统开发不同版本的软件。4.随着互联网的兴起,CS架构不适合Web,最大的原因是Web应用程序的修改和升级非常迅速,而CS架构需要

【音视频原理】图像相关概念 ① ( 像素 | 分辨率 | 位深 )

文章目录一、图像相关概念1、像素2、分辨率3、位深一、图像相关概念图像相关概念:像素:图片基本单位;分辨率:图像的像素尺寸;位深:记录每个像素点颜色时使用的位数;帧率:一秒钟传输图片的帧数,单位fps,FramePerSecond;码率:单位时间内视频的数据流量,如1Mbps;Stride:内存中每行像素占用的空间,不

引领UI设计生产工具进入AI时代,猿辅导旗下Motiff发布三大AI功能

近期,IXDC2023国际体验设计大会在北京国家会议中心举行,共邀请全球800+企业,1000+名设计师共襄主题为“设计领导力”的创新盛会。作为全球最具影响力的创新设计大会之一,大会围绕创新、系统、商业三个关键维度,结合在AIGC领域的实践与应用,释放AI创作的无限可能。作为AI时代设计工具,猿辅导的UI设计工具Mot

苹果笔不用原装可以吗?好用的平板触控笔

由于Applepencil的出世,给许多小伙伴带了很高的生产效率。但Applepencil的昂贵,让许多小伙伴连连劝退,觉得只是偶尔写字,没有必要入手一支这么昂贵的笔,咱们国内也会很多做得相当不错的平替电容笔,但很多小伙伴在挑选电容笔时很纠结,不知道该选择哪个一款好用,今天给大家介绍几款好用的电容笔,有需要的小伙伴可以

AutoDL云服务器的使用

目录简介使用流程租借连接服务器输入登录指令以及密码设置服务器环境和同步文件使用技巧查看远程主机资源上传下载数据如果上传的文件是压缩包我的心得将大文件用百度云盘上传,小文件通过同步区域上传跨实例拷贝数据如果本实例没GPU选择其他实例简介使用此云服务器的优势学生认证,省钱可无卡模式启动,省钱上传数据比较方便网站使用流程租借

MYSQL的触发器

触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。

企业如何获得用户信赖感,媒介盒子告诉你

互联网和新媒体的快速发展使得内容市场空前繁荣,营销方式也越来越多元化,消费者已经很难被夸张吸睛的营销模式打动,他们更倾向于选择自己信赖的产品,对于企业而言,用户信任是决定企业发展与否的关键因素,产品和品牌失去用户信任将很难发展长远。接下来媒介盒子就告诉大家,企业如何利用软文推广获得用户信赖感。一、 软文突出品

27种跨境电商站外引流方法,看看有没有用过

如果你在跨境电商站内感觉做得差不多,可以尝试寻找外部流量,站外引流方法大概有4大类:1.主动销售2.网红合作3.内容营销4.其他方法一、主动销售01创建EDM邮件列表用MailChimp,在你的自有网站或者第三方建站平台,创建一个邮箱注册页面,收集你的潜在用户的邮件列表,然后给他们发销售类,或者相关客户感兴趣的内容。0

爱弥儿——语录

多给孩子们一些自由空间,少替他们做些事情,好让他们多些自己动手的机会。如果他跌倒了,摔伤了头部,磕破了鼻子或者擦掉了手指上的皮,我不会表现得一脸慌张,而是平静地站在旁边,或者过一段时间再走过去安慰他。是他自己跌倒在地,所以他就得自己承担后果。其实,受伤的时候,受伤所带来的恐惧感比受伤本身更让他难受。他会根据我的反应来判

个人认为最快搭建免费数字人平台的方法(均不用魔法)

一、提前准备安装包:1、秋叶整合包:bilibili上很多up主有分享最新的如:全网最易安装|StableDiffusion安装教程(内含下载链接)-哔哩哔哩2、ffmpeg安装包:​​​​​​https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z3、SadTalke

聊聊最近使用 AI 的一些感想

AI的发展是令人兴奋的,但火热至今,仍然没看到令我感到兴奋的产品,可能更多的AI是面向B端,我体验不到吧。相比过去,现在的AI聊天机器人显得更加智能和人性化了,但它的置信度还不高,简单说,就是一本正经的胡说八道。最近我主要是在以下几个场景使用AI。玩了下AI生成代码,一些单纯的逻辑、算法代码还是不错的,但是不能太复杂,

热文推荐