如何使用Selenium Python将鼠标从指定元素向上移动9像素
解决方法
你现有的代码存在两个核心问题:
- 没有先将鼠标定位到目标元素上,
move_by_offset默认是相对于当前鼠标的视口位置偏移,无法达到相对于目标元素偏移的效果 - ActionChains的所有动作需要串联在同一个实例中,最后调用
perform()才会实际执行,你分开创建多个ActionChains实例且没有调用执行方法,操作不会生效
正确实现代码
# 定位目标元素 classic = browser.find_element(By.CLASS_NAME, "surf-text") # 构造并执行动作链 webdriver.ActionChains(browser)\ .move_to_element(classic) # 先移动到目标元素的中心位置 .move_by_offset(0, -9) # 基于元素中心向上偏移9像素 .click() # 在偏移后的位置执行点击 .perform() # 触发所有链式动作执行
补充注意事项
- 若页面存在加载延迟,建议先添加显式等待逻辑,确保元素成功定位后再执行动作链,避免抛出
NoSuchElementException报错 - 如果后续还有其他基于该偏移位置的操作,可以把动作链实例赋值给变量后再扩展动作,效果和链式调用完全一致
内容的提问来源于stack exchange,提问作者PECTAPT
相关产品推荐
相关产品推荐

