使用 webdriver 滚动到元素?

新手上路,请多包涵

我仍在学习并回答我的一个问题: 在这里,有人告诉我这可能是到期的,因为所讨论的元素不在视图中。

我查看了文档和 SO,这是最相关的答案: here

您可以使用“org.openqa.selenium.interactions.Actions”类移动到一个元素:

 WebElement element = driver.findElement(By.id("my-id"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
## actions.click();
actions.perform();

当我尝试使用上面的内容滚动到元素时:它说 WebElement 未定义。

我认为这是因为我没有导入相关模块。有人可以指出我应该导入什么吗?

编辑:正如 alecxe 所指出的,这是 java 代码。

但与此同时,在尝试弄清楚一段时间之后。我找到了 WebElement 的导入方法:

 from selenium.webdriver.remote.webelement import WebElement

可能会帮助像我这样的人。

IMO,它的方法也是一个很好的教训:

去了: 文档

class selenium.webdriver.remote.webelement.WebElement(parent, id_, w3c=False)

需要拆分成上面提到的命令形式。

原文由 Sid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 767
2 个回答

您正在尝试使用 Python 运行 Java 代码。在 Python/Selenium 中, org.openqa.selenium.interactions.Actions 反映在 ActionChains 中:

 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()

或者,您也可以通过 scrollIntoView() “滚动到视图中”:

 driver.execute_script("arguments[0].scrollIntoView();", element)

如果您对差异感兴趣:

原文由 alecxe 发布,翻译遵循 CC BY-SA 3.0 许可协议

这不是问题的直接答案(它不是关于 Actions ),但它也允许您轻松滚动到所需的元素:

 element = driver.find_element_by_id('some_id')
element.location_once_scrolled_into_view

这实际上是为了返回页面上元素的坐标( xy ),但也向下滚动到目标元素

原文由 Andersson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题