【发布时间】:2021-03-25 09:00:49
【问题描述】:
我目前正在做一个 selenium 测试来测试一些分页按钮
这些按钮在屏幕视口之外...
在 Firefox 中我可以很好地执行这段代码 (显然与 driver = webdriver.Firefox)
from selenium.webdriver.common.action_chains import ActionChains
import selenium.common.exceptions
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
url = 'https://stackoverflow.com'
driver.get(url)
driver.maximize_window()
footer_link = driver.find_element_by_css_selector("#footer > div > nav > div:nth-child(1) > h5 > a")
action = ActionChains(driver)
action.move_to_element(footer_link).click().perform()
driver.quit()
(顺便说一句,这是我的错误的最小产生)
同样,代码在 Firefox 中运行良好
但是在 Chrome(89 版)中,代码失败并出现此错误
selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: move target out of bounds
我已经尝试了一些方法来使其工作,并且我已经能够通过使用 execute_script() 滚动到元素来使其工作,但我需要使用 sleep()、隐式等待或显式等待。
我想使用既定的方式滚动到元素而不使用睡眠,也就是使用 ActionChains 对象
通过在互联网上的一点点挖掘,我认为这段代码可以工作,但我一直收到同样的错误......
任何帮助将不胜感激!
【问题讨论】:
-
从错误中,你可以看到高度是 8545
Element is not clickable at point (137, 8545)这就是为什么你不能滚动到它...试试this method
标签: python selenium selenium-chromedriver web-testing