UI自动化Selenium ActionChains鼠标(动作链)

我们在实现UI自动化过程中,有时会遇到鼠标模拟操作,如鼠标悬停后,菜单划出;鼠标按下后,下拉展开;单击、双击、拖动等等;但我们常常对鼠标的单击和双击比较了解(click和doubleclick)但是其他的如何使用呢?且看下面分解:

1、selenium提供了一个类来专门处理鼠标的动作-selenium.webdriver.common.action_chains.ActionChains(driver),它基本能满足所有我们对鼠标的操作

2、ActionChains是怎么工作的呢?其实当我们调用它时,他并不会立即执行,而是如一个管道,我们只是将要操作的一系列动作塞入管道中;当打开开关时(调用perform方法),就会按照我们塞入的顺序,依次执行;

3、写法1:链式写法

python 复制代码
# 鼠标悬停到指定元素
def moveMouse2(self, locate, locateType=By.XPATH):
    WebDriverWait(self.driver, 10, 0.5).until(EC.presence_of_element_located((locateType, locate)))
    DH = self.driver.find_element(locateType, locate)  # 得到要操作的对象元素
    ActionsChains(self.driver).move_to_element(DH).click(DH).perform()

4、写法2:分步骤写法

python 复制代码
# 鼠标悬停到指定元素
def moveMouse2(self, locate, locateType=By.XPATH):
    WebDriverWait(self.driver, 10, 0.5).until(EC.presence_of_element_located((locateType, locate)))
    DH = self.driver.find_element(locateType, locate)  # 得到要操作的对象元素
    actions = ActionChains(self.driver)  #创建actionChains对象
    actions.move_to_element(DH) #塞入鼠标悬停事件,并绑定要操作的元素DH
    actions.click(DH) #塞入点击鼠标事件,并绑定要操作的元素DH;
    actions.perform() # 打开开关,触发执行
    # 特别注意,上面步骤中,是可以绑定不同元素的;

5、ActionChains对象的其他方法列表

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) ------移动到距某个元素(左上角坐标)多少距离的位置

perform() ------执行链中的所有动作

release(on_element=None) ------在某个元素位置松开鼠标左键

send_keys(*keys_to_send) ------发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send) ------发送某个键到指定元素

相关推荐
开开心心就好7 小时前
仅168KB的桌面图标自动隐藏工具
windows·计算机视觉·计算机外设·excel·启发式算法·宽度优先·csdn开发云
挖AI金矿8 小时前
(十三)多Agent协同
自动化·个人开发·ai编程·hermes agent·爱马仕agent
易生一世9 小时前
自动化Pipeline中的Kiro CLI详解
自动化·pipeline·key·headless·kiro
薛定猫AI12 小时前
【深度解析】Kimi K2.6 的长上下文 Agentic Coding 能力与 OpenAI 兼容 API 接入实践
人工智能·自动化·知识图谱
Agent手记18 小时前
首件检验流程繁琐,耗时久还容易出现合规漏洞怎么办?——基于实在Agent的AI+超自动化全流程闭环实战
网络·人工智能·ai·自动化
帅气的钟先生18 小时前
OpenClaw + QQBot 实战:从 0 到 1 搭建你的消息自动化助手
运维·人工智能·自动化
Mr -老鬼18 小时前
EasyClick 双端自动化智能体|Android&iOS 全平台 EC 脚本开发助手
android·ios·自动化·易点云测·#easyclick·#ios自动化
缝艺智研社19 小时前
誉财 YC - 21 平板下摆机:服装下摆与袖口加工的卓越之选
大数据·人工智能·自动化·电脑·新人首发·线上模板机
挖AI金矿19 小时前
(十二)模型与多Provider切换
自动化·个人开发·ai编程·hermes agent·爱马仕agent
量子-Alex19 小时前
【大模型智能体】AutoFlow:大型语言模型代理的自动化工作流生成
人工智能·语言模型·自动化