演示 Selenium release() 释放按下的鼠标按键。click_and_hold() 和 release() 永远是一对 —— 按住不松 = 鼠标一直处于按下状态,任何后续点击都会异常。
三种用法:
release() → 释放当前按住的按键(默认左键),之前有哪个按键按住就释放哪个release(on_element=el) → 先移动到元素再释放(可选参数)click_and_hold() / drag_and_drop() 配合,一般不用单独写⚠️ 常见问题:写了 click_and_hold 忘了 release → 后续所有 click 都变成了"在按下状态再按一次" → 浏览器行为混乱。调试 ActionChains 出问题时,先检查 hold 和 release 是否配对。
drag_and_drop 更灵活:move_by_offset)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()