首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《软件自动化测试实战系列之ActionChains鼠标模拟操作方法使用大全》

《软件自动化测试实战系列之ActionChains鼠标模拟操作方法使用大全》

作者头像
XPcode7
发布2025-10-23 14:59:52
发布2025-10-23 14:59:52
2200
代码可运行
举报
运行总次数:0
代码可运行

《软件自动化测试实战系列之ActionChains鼠标模拟操作方法使用大全》

项目实战

前言:用Selenium进行自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单机、双击、右击、拖动等。而Selenium提供一个类来处理这类时间——ActionChains。接下来我来带着大家深入研究。


1、ActionChains的引入

ActionChains基本能够满足所有对鼠标操作的需求。使用此类中的方法,需要先引入此类,引入代码为

代码语言:javascript
代码运行次数:0
运行
复制
from selenium.webdriver import ActionChains
在这里插入图片描述
在这里插入图片描述
2、ActionChains的执行原理

当调用ActionChains()方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里面,当调用perform()方法时,按照队列里面的顺序进行执行。其中调用的perform()方法必须放在ActionChains方法最后。那么这种情况可以有两种调用方法。

3、ActionChains的调用写法
一、链式写法
代码语言:javascript
代码运行次数:0
运行
复制
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# 初始化浏览器驱动
driver = webdriver.Chrome()

try:
    # 打开网页
    driver.get("https://www.example.com")

    # 定位元素
    element = driver.find_element(By.ID, "example-id")

    # 使用链式写法执行操作
    actions = ActionChains(driver)
    actions.move_to_element(element).click().send_keys("软件测试赋能培训找旺仔Sec!").perform()

except Exception as e:
    print(f"An error occurred: {e}")

finally:
    # 关闭浏览器
    driver.quit()

在上述代码中,move_to_element、click 和 send_keys 这些操作方法依次相连,最后调用 perform() 方法来执行所有操作。

二、分布写法
代码语言:javascript
代码运行次数:0
运行
复制
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# 初始化浏览器驱动
driver = webdriver.Chrome()

try:
    # 打开网页
    driver.get("https://www.example.com")

    # 定位元素
    element = driver.find_element(By.ID, "example-id")

    # 使用分布写法执行操作
    actions = ActionChains(driver)
    actions.move_to_element(element)
    actions.click()
    actions.send_keys("软件测试赋能培训找旺仔Sec!!")
    actions.perform()

except Exception as e:
    print(f"An error occurred: {e}")

finally:
    # 关闭浏览器
    driver.quit()

在分布写法代码中,每个操作方法单独调用,最后同样调用 perform() 方法来执行所有操作。

注意:这两种写法达成的效果一样,不过链式写法更简洁,分布写法则更便于调试和理解。 我给大家整理了ActionChains的方法大全如下 seleniumActionChains类常用方法及其描述的表格:

方法

描述

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)

将源元素拖动到目标元素上。source 是要拖动的元素,target 是目标元素。

drag_and_drop_by_offset(source, xoffset, yoffset)

将源元素拖动到相对于其当前位置的指定偏移量处。source 是要拖动的元素,xoffset 和 yoffset 分别是水平和垂直偏移量。

key_down(value, element=None)

按下指定的键(如 Control、Shift 等),不释放。如果指定了元素,则在该元素上执行操作。

key_up(value, element=None)

释放之前按下的键。如果指定了元素,则在该元素上执行操作。

move_by_offset(xoffset, yoffset)

将鼠标从当前位置移动到指定的偏移量处。xoffset 和 yoffset 分别是水平和垂直偏移量。

move_to_element(to_element)

将鼠标移动到指定元素的中心位置。

move_to_element_with_offset(to_element, xoffset, yoffset)

将鼠标移动到指定元素内的指定偏移量处。

perform()

执行存储在 ActionChains 对象中的所有操作。

release(on_element=None)

在指定元素上释放鼠标左键。如果未指定元素,则在当前鼠标位置释放。

send_keys(*keys_to_send)

在当前焦点元素上发送一系列按键。

send_keys_to_element(element, *keys_to_send)

在指定元素上发送一系列按键。

4、百度首页项目实战

需求:1、进入百度首页; 2、在输入框中输入“软件测试竞赛培训找旺仔Sec”; 3、双击信息; 4、右击信息; 5、将鼠标指针悬停在百度一下按钮处;

代码语言:javascript
代码运行次数:0
运行
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

# 初始化浏览器驱动
driver = webdriver.Chrome()

try:
    # 1. 进入百度首页
    driver.get("https://www.baidu.com/")
    
    # 定位输入框和搜索按钮
    input_box = driver.find_element(By.ID, "kw")
    search_button = driver.find_element(By.ID, "su")

    # 2. 在输入框中输入内容
    input_box.send_keys("软件测试竞赛培训找旺仔Sec")

    # 3. 创建ActionChains对象并执行操作
    actions = ActionChains(driver)
    
    # 4. 双击输入框内容(先点击确保焦点)
    actions.click(input_box)
    actions.double_click(input_box)
    
    # 5. 右击输入框内容
    actions.context_click(input_box)
    
    # 6. 悬停在"百度一下"按钮
    actions.move_to_element(search_button)
    
    # 执行所有操作
    actions.perform()


finally:
    # 关闭浏览器
    driver.quit()

创作不易,如果对您有帮助的话,点赞关注收藏三连支持一下俺吧!🙂

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《软件自动化测试实战系列之ActionChains鼠标模拟操作方法使用大全》
    • 项目实战
    • 1、ActionChains的引入
    • 2、ActionChains的执行原理
    • 3、ActionChains的调用写法
    • 4、百度首页项目实战
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档