当前位置:网站首页>学会了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 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
边栏推荐
- 综述 | 激光与视觉融合SLAM
- 2022 Moonriver global hacker song winning project list
- [daily news]what happened to the corresponding author of latex
- 【LeetCode】43. 字符串相乘
- How does win11 set user permissions? Win11 method of setting user permissions
- u本位合约和币本位合约有区别,u本位合约会爆仓吗
- 七夕表白攻略:教你用自己的专业说情话,成功率100%,我只能帮你们到这里了啊~(程序员系列)
- #夏日挑战赛# HarmonyOS canvas实现时钟
- process.env.NODE_ENV
- Pnas: brain and behavior changes of social anxiety patients with empathic embarrassment
猜你喜欢

2022 Moonriver global hacker song winning project list

【OpenCV 例程200篇】216. 绘制多段线和多边形

韩国AI团队抄袭震动学界!1个导师带51个学生,还是抄袭惯犯

使用腾讯云搭建图床服务

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

【php毕业设计】基于php+mysql+apache的教材管理系统设计与实现(毕业论文+程序源码)——教材管理系统

Share the daily work and welfare of DJI (Shenzhen headquarters) in Dajiang

She is the "HR of others" | ones character

Factory high-precision positioning management system, digital safety production management

Comment win11 définit - il les permissions de l'utilisateur? Win11 comment définir les permissions de l'utilisateur
随机推荐
动作捕捉系统用于苹果采摘机器人
Preorder, inorder, follow-up of binary tree (non recursive version)
【Hot100】20. 有效的括号
Solution to the problem that the keypad light does not light up when starting up
[PHP graduation design] design and implementation of textbook management system based on php+mysql+apache (graduation thesis + program source code) -- textbook management system
【每日一题】1175. 质数排列
MySQL advanced 4
2023 spring recruitment Internship - personal interview process and face-to-face experience sharing
There is a difference between u-standard contract and currency standard contract. Will u-standard contract explode
[video memory optimization] deep learning video memory optimization method
2022 Moonriver global hacker song winning project list
ADS算力芯片的多模型架构研究
ABAP call restful API
微服务追踪SQL(支持Isto管控下的gorm查询追踪)
ThinkPHP kernel work order system source code commercial open source version multi user + multi customer service + SMS + email notification
Detailed explanation of stm32adc analog / digital conversion
Advanced cross platform application development (24): uni app realizes file download and saving
药品溯源夯实安全大堤
求求你们,别再刷 Star 了!这跟“爱国”没关系!
智慧党建: 穿越时空的信仰 | 7·1 献礼