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) ------发送某个键到指定元素

相关推荐
全栈工程师修炼指南8 分钟前
告别手动构建!Jenkins 与 Gitlab 完美协作,根据参数自动化触发CI/CD流水线实践
运维·ci/cd·自动化·gitlab·jenkins
Source.Liu5 小时前
【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
windows·python·自动化
Source.Liu5 小时前
【Pywinauto库】12.1 pywinauto.backend 后端内部实施模块
开发语言·windows·python·自动化
宇钶宇夕7 小时前
西门子 S7-200 SMART PLC 核心指令详解:从移位、上升沿和比较指令到流水灯控制程序实战
运维·算法·自动化
桃杬9 小时前
lvgl修改输入设备驱动使其支持鼠标右键、双击、滑轮...
计算机外设
大视码垛机10 小时前
速度与安全双突破:大视码垛机重构工业自动化新范式
大数据·数据库·人工智能·机器人·自动化·制造
疯狂的维修11 小时前
关于Gateway configration studio软件配置网关
网络协议·c#·自动化·gateway
绀目澄清1 天前
unity UGUI 鼠标画线
unity·计算机外设·游戏引擎
沙尘暴炒饭1 天前
前端vue使用canvas封装图片标注功能,鼠标画矩形框,标注文字 包含下载标注之后的图片
前端·vue.js·计算机外设
arbboter1 天前
【自动化】深入浅出UIAutomationClient:C#桌面自动化实战指南
运维·c#·自动化·inspect·uiautomation·uia·桌面自动化