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

相关推荐
水银嘻嘻2 小时前
08 web 自动化之 PO 设计模式详解
前端·自动化
小冯的编程学习之路3 小时前
【软件测试】:推荐一些接口与自动化测试学习练习网站(API测试与自动化学习全攻略)
c++·selenium·测试工具·jmeter·自动化·测试用例·postman
push_6 小时前
罗技无线鼠标的配对方法
计算机外设
Ten peaches6 小时前
Selenium-Java版(操作元素)
java·selenium·测试工具·html
SoFlu软件机器人9 小时前
Java 框架配置自动化:告别冗长的 XML 与 YAML 文件
xml·java·自动化
微刻时光9 小时前
影刀RPA网页自动化总结
运维·人工智能·python·低代码·自动化·rpa·影刀rpa
2301_787552879 小时前
Lightpanda开源浏览器:专为 AI 和自动化而设计的无界面浏览器
运维·自动化
顾一大人9 小时前
dp自动化登陆之hCaptcha 验证码
爬虫·python·自动化
微刻时光14 小时前
影刀RPA开发-CSS选择器介绍
css·python·低代码·自动化·rpa·影刀rpa·影刀实战
Looooking16 小时前
Python 之 selenium 打开浏览器指定端口进行接续操作
python·selenium