鼠标操作演示 · 释放

释放 release — 松开鼠标左键,结束按住与拖拽状态的收尾动作详解
首页 鼠标操作导航

当前演示 · 释放 release

演示 Selenium release() 释放按下的鼠标按键。click_and_hold() 和 release() 永远是一对 —— 按住不松 = 鼠标一直处于按下状态,任何后续点击都会异常。

三种用法:

⚠️ 常见问题:写了 click_and_hold 忘了 release → 后续所有 click 都变成了"在按下状态再按一次" → 浏览器行为混乱。调试 ActionChains 出问题时,先检查 hold 和 release 是否配对。

左击 右击 双击 移动 按住 释放 拖拽 滚动
07 · 释放

释放 release(松开鼠标左键,结束按住/拖拽)

ActionChains(driver).release().perform()
为什么需要单独的 release?
click_and_hold() + release() 组合是"手动版拖拽",比 drag_and_drop 更灵活:
✅ 可以在按住期间 移动到任意坐标(move_by_offset)
✅ 可以 拖后不释放 —— 再拖到另一位置
✅ 可以配合 键盘修饰键(Ctrl / Shift 多选)
典型错误:忘了 release,导致鼠标一直在"被按住"状态。
释放演示:在"按住框"内按住按钮 → 拖到"释放框" → 松开才生效
释放区域(拖到这里松手)
[状态] 试试:按住按钮 → 拖到红色释放框 → 松开...
Python Selenium · 释放 release(分步式拖拽)
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_release_tech.html")

# 2. 定位元素
source  = driver.find_element(By.ID, "releaseBtn")
target  = driver.find_element(By.ID, "releaseTarget")
actions = ActionChains(driver)

# ===== 3. 分步式:按住 → 移到目标 → 释放 =====
actions.click_and_hold(source) \
       .move_to_element(target) \
       .release() \
       .perform()

# ===== 按住期间还可以做更多事 =====
actions.click_and_hold(source) \
       .move_by_offset(100, 0) \
       .move_by_offset(0, 80) \
       .release() \
       .perform()

# ★ 总结:ActionChains 7 大方法
# click          左击
# context_click  右击
# double_click   双击
# move_to_element    移动到
# click_and_hold     按住
# drag_and_drop      拖拽(内部 = 按住 + 移动 + 释放)
# release            释放

# 4. 关闭浏览器
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. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。