当前位置:网站首页>学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
2022-07-01 15:50:00 【TEST_二 黑】
前言
我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息。
这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web 自动化的时候如何来操作鼠标。
鼠标操作,我们可以使用 selenium 的 ActionChains 类来实现,我们先来认识一下这个类。
01.ActionChains 类常用方法
click_and_hold(on_element=None) :点击鼠标左键,不松开
context_click(on_element=None):点击鼠标右键
double_click(on_element=None):双击鼠标左键
drag_and_drop(source, target):拖拽到某个元素然后松开
move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标
move_to_element(to_element) :鼠标移动到某个元素
release(on_element=None):在元素上释放按住的鼠标按钮
pause(seconds):暂停操作(秒)
02.ActionChains 类所有方法
perform(self)–执行鼠标操作方法
reset_actions()–清楚操作子令
click(on_element=None)–点击鼠标左键
click_and_hold(on_element=None):点击鼠标左键,不松开
context_click(on_element=None):点击鼠标右键
double_click(on_element=None):双击鼠标左键
drag_and_drop(source, target):拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) :拖拽到某个坐标然后松开
key_down(value, element=None):按下某个键盘上的
key_up(value, element=None) :松开某个
move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标
move_to_element(to_element) :鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset):移动到
距某个元素(左上角坐标)多少距离的位置
pause(seconds):暂停操作(秒)
release(on_element=None):在元素上释放按住的鼠标按钮
send_keys(*keys_to_send):发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) :发送某个键到指定元素
03.ActionChains 使用步骤
- 实例化:actions = ActionChains(driver)
- 调用鼠标操作方法:actions.move_to_element(menu)
- 执行鼠标操作方法:actions.perform()
04.实战
代码做的事情:
- 打开测试网页:https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover
- 切换 iframe
- 定位到绑定鼠标事件的 div
- 将鼠标移动到 div 上触发事件(可以观察到 div 上字会发生变化)
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome(r"D:\chromeDriver\71\chromedriver71.exe")
driver.implicitly_wait(5)
driver.get(url="https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover")
driver.maximize_window()
#切换iframe
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@id="iframeResult"]'))
#元素定位
ele = driver.find_element_by_xpath('//div[@οnmοuseοver="mOver(this)"]')
#移动鼠标到元素上触发事件
actions = ActionChains(driver)
actions.move_to_element(ele)
actions.perform()
time.sleep(5)
driver.quit()
05.总结
ActionChains 类中其他方法使用方式都一样,大家有空可以试一下
ActionChains 类中有很多方法,但是常用的并不多,上面已经列出,掌握常用方法即可
特别注意:ActionChains 的执行原理,当你调用 ActionChains 的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用 perform()方法时,队列中的时间会依次执行。
ActionChains 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
边栏推荐
- Go language learning notes - Gorm use - table addition, deletion, modification and query | web framework gin (VIII)
- Win11如何设置用户权限?Win11设置用户权限的方法
- ABAP-屏幕切换时,刷新上一个屏幕
- ATSS:自动选择样本,消除Anchor based和Anchor free物体检测方法之间的差别
- 【Hot100】20. 有效的括号
- Can't global transactions be used when shardingjdbc is used in seate?
- Seata中1.5.1 是否支持mysql8?
- Win11如何設置用戶權限?Win11設置用戶權限的方法
- Redis high availability principle
- picgo快捷键 绝了这人和我的想法 一模一样
猜你喜欢

Équipe tensflow: Nous ne sommes pas abandonnés

Go语学习笔记 - gorm使用 - 表增删改查 | Web框架Gin(八)

RT-Thread Env 工具介绍(学习笔记)

ATSs: automatically select samples to eliminate the difference between anchor based and anchor free object detection methods

2022 Moonriver global hacker song winning project list

自動、智能、可視!深信服SSLO方案背後的八大設計

Idea start command line is too long problem handling

工厂高精度定位管理系统,数字化安全生产管理

ADS算力芯片的多模型架构研究

GaussDB(for MySQL) :Partial Result Cache,通过缓存中间结果对算子进行加速
随机推荐
开机时小键盘灯不亮的解决方案
Idea start command line is too long problem handling
One revolution, two forces, three links: the "carbon reduction" roadmap behind the industrial energy efficiency improvement action plan
跨平台应用开发进阶(二十四) :uni-app实现文件下载并保存
STM32F1与STM32CubeIDE编程实例-PWM驱动蜂鸣器生产旋律
laravel的模型删除后动作
Pnas: brain and behavior changes of social anxiety patients with empathic embarrassment
Day 3 of rhcsa study
华为发布HCSP-Solution-5G Security人才认证,助力5G安全人才生态建设
【php毕业设计】基于php+mysql+apache的教材管理系统设计与实现(毕业论文+程序源码)——教材管理系统
Seata中1.5.1 是否支持mysql8?
Redis秒杀demo
周少剑,很少见
C#/VB. Net merge PDF document
Crypto Daily:孙宇晨在MC12上倡议用数字化技术解决全球问题
Use Tencent cloud to build a map bed service
大龄测试/开发程序员该何去何从?是否会被时代抛弃?
超视频时代,什么样的技术会成为底座?
Reading notes of top performance version 2 (V) -- file system monitoring
Share the daily work and welfare of DJI (Shenzhen headquarters) in Dajiang