使用以下代码:
elem = driver.find_element_by_xpath('/html/body/canvas')
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element_with_offset(elem, 185, -35).click().perform()
我无法导航到画布元素的所需部分,并收到此错误:
MoveTargetOutOfBoundsException: move target out of bounds
(Session info: chrome=85.0.4183.102)
我的移动目标肯定在视口中,不需要滚动即可点击。我使用chromedriver,并使用画布的左上角作为move_to_element_with_offset()
的像素坐标的起点。有什么解决办法吗?我对任何在python中点击画布上指定点的解决方案都感兴趣,不需要使用同样的方法。
move_to_element_with_offset((
move_to_element_with_offset()
将鼠标移动指定元素的偏移量,其中偏移量相对于元素的左上角。
因此,从<canvas>
元素的左上角开始,如果您打算移动偏移(185, -35)
,其中:
- 右侧185个单位
- 35个单元以上
将始终作为MoveTargetOutOfBoundsException
的结果。
解决方案
不使用负偏移向上移动,您可以使用正偏移向下移动,如下所示:
actions.move_to_element_with_offset(elem, 35, 35).click().perform()
参考文献
您可以在中找到相关的详细讨论
- MoveTargetOutOfBoundsChromeDriver版本的异常问题>74