Scrolling to element using webdriver?
我仍在学习,并回应我的一个问题:在这里,我被告知这可能是因为所讨论的元素不在我的视野之内。
我查阅了文档,所以,这里是最相关的答案:这里
可以使用"org.openqa.selenium.interactions.actions"类移动到元素:
1 2 3 4 5 | WebElement element = driver.findElement(By.id("my-id")); Actions actions = new Actions(driver); actions.moveToElement(element); ## actions.click(); actions.perform(); |
当我尝试使用上面的滚动到元素时:它表示WebElement未定义。
我认为这是因为我没有导入相关模块。有人能指出我该进口什么吗?
编辑:正如Alcxe所指出的,这是Java代码。
但与此同时,在尝试了一段时间后。我已经找到WebElement的导入方法:
1 | from selenium.webdriver.remote.webelement import WebElement |
可能会帮助像我这样的人。
这也是一个很好的教训,IMO:
转到:文档这个
1 | class selenium.webdriver.remote.webelement.WebElement(parent, id_, w3c=False) |
需要分为上面提到的命令格式。
您正在尝试用Python运行Java代码。在python/selenium中,
1 2 3 4 5 6 | from selenium.webdriver.common.action_chains import ActionChains element = driver.find_element_by_id("my-id") actions = ActionChains(driver) actions.move_to_element(element).perform() |
或者,您也可以通过
1 | driver.execute_script("arguments[0].scrollIntoView();", element) |
如果您对差异感兴趣:
- ScrollIntoView与MoveToElement
这不是问题的直接答案(与
1 2 | element = driver.find_element_by_id('some_id') element.location_once_scrolled_into_view |
这实际上是为了返回页面上元素的坐标(
如果元素具有
如果要导航到页面并向下滚动到带有
例子
假设我们需要导航到SeleniumWaits文档,并向下滚动页面到"隐式等待"部分。我们能做到
1 | driver.get('https://selenium-python.readthedocs.io/waits.html') |
并添加用于滚动的代码…或使用
1 | driver.get('https://selenium-python.readthedocs.io/waits.html#implicit-waits') |
导航到页面并将页面自动滚动到带有