鼠标操作演示 · 移动

移动 move_to_element — 5 种移动方法:到元素 / 到坐标 / 带偏移 / 分步 / 贝塞尔曲线
首页 鼠标操作导航

当前演示 · 鼠标移动 move

演示 Selenium 的 两种鼠标移动方式:移动到元素中心 和 移动到绝对坐标。悬停菜单、hover 效果触发、拖拽定位等场景都需要它。

两种 API 区别:

💡 悬停菜单实战:ActionChains(driver).move_to_element(menu).perform() → 等子菜单出现 → click 子菜单项。ActionChains 会自动排队执行,不用分散调用。

左击 右击 双击 移动 按住 释放 拖拽 滚动
04 · 移动(4 种)

鼠标移动

move_to_element / _with_offset / move_by_offset / move_to_point
为什么需要 4 种移动方法?
每种方法的"参考原点"不同:move_to_element 以元素中心为锚点; move_to_element_with_offset 以元素左上角为原点偏移; move_by_offset 以当前鼠标位置为原点; move_to_point 以浏览器视口左上角为绝对坐标原点(Selenium 4.6+)。
选错原点 = 鼠标飞到意想不到的位置!
① move_to_element 移动到元素中心
悬停菜单案例(鼠标移入触发子菜单展开)
② move_to_element_with_offset 元素内相对偏移
画布演示(蓝十字 = 元素中心;鼠标移到画布上,显示相对中心的偏移量)
(+50, 0)
(0, -30)
offset: (0, 0)
③ move_by_offset 相对当前位置移动
小球演示(点击按钮让小球从当前位置相对偏移移动)
每格 25px
↑上
←左
右→
下↓
当前绝对坐标: (center, center)
④ move_to_point 视口绝对坐标(Selenium 4.6+)
坐标地图演示(点击地图任意位置,记录绝对坐标 + 标记十字线)
(0,0)
x →
y ↓
点击地图任意位置 → move_to_point(x, y)
[状态] 请操作上方 4 个移动 demo,日志会显示在此...
Python Selenium · 4 种鼠标移动方法
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

# 1. 启动浏览器 + 打开演示页面
driver = webdriver.Chrome()
driver.get("https://autotest-505.pages.dev/mouse_op_tech_sections/mouse_move_tech.html")

actions = ActionChains(driver)

# ── ① move_to_element:移动到元素中心 ──
menu = driver.find_element(By.ID, "menuFile")
actions.move_to_element(menu).perform()

# ── ② move_to_element_with_offset:元素内偏移 ──
# 元素左上角为原点,向右 +50px、向上 -30px
canvas = driver.find_element(By.ID, "offsetCanvas")
actions.move_to_element_with_offset(canvas, xoffset=50, yoffset=-30).perform()

# ── ③ move_by_offset:相对当前位置移动 ──
# 鼠标当前位置为原点,向右 +30、向下 +25
actions.move_by_offset(dx=30, dy=25).perform()

# 常见:按住 → 相对移动 → 释放(拖拽 = 分步式)
ball = driver.find_element(By.ID, "ball")
actions.click_and_hold(ball) \
       .move_by_offset(30, 25) \
       .release() \
       .perform()

# ── ④ move_to_point:视口绝对坐标(Selenium 4.6+) ──
# 浏览器视口左上角为原点
actions.move_to_point(x=400, y=300).perform()

# ── 方法对比速查 ──
# move_to_element(el)           锚点: 元素中心       常用度: ★★★★★
# move_to_element_with_offset   锚点: 元素左上角     常用度: ★★★☆☆
# move_by_offset                锚点: 当前鼠标位置   常用度: ★★★★☆(拖拽必备)
# move_to_point                 锚点: 视口左上角     常用度: ★★☆☆☆(4.6+)

# 3. 关闭浏览器
driver.quit()
打开 查看属性 复制
重命名 删除

关于我们

Python 自动化测试学习平台是一个面向软件测试工程师、开发人员及在校学生的交互式在线学习平台,专注于 Selenium WebDriver 与 Python unittest 自动化测试技能的教学与实践。

我们以"理论 + 实战 + 可交互演示"为核心特色,将八种常规元素定位和Javascript定位、元素操作、自动化测试工具、单元测试、测试模型等知识体系拆分为模块化课程,每个模块都配有可点击、可输入、可运行的模拟练习页面。

平台致力于降低自动化测试的入门门槛,让学习者从"看懂代码"到"动手实操",逐步掌握企业级自动化测试框架的设计与落地能力。

联系方式

📧邮箱:lq@selenium-auto-test.com

📞电话:0755-12345678

📍地址:深圳

💬微信公众号:Selenium自动化测试

🐙GitHub:github.com/selenium-auto-test

免责声明

1. 本平台所有示例代码、演示页面及教程内容均仅供学习交流使用,不构成任何商业推广或技术服务承诺。

2. 平台中的 Selenium API 描述、Python 语法说明均以官方文档为准,如有版本差异请以对应官方文档为准。

3. 学习者在实际项目中应用平台所学内容时,应结合自身项目环境进行充分测试,本平台不对因直接使用示例代码而产生的任何直接或间接损失承担责任。

4. 本平台所引用的第三方库(Selenium、ChromeDriver、unittest 等)版权归其各自作者及维护者所有。

5. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。