【发布时间】:2018-07-21 17:41:24
【问题描述】:
我需要能够向上滚动,然后向下滚动才能找到带有 Selenium 的元素。
我已经看到了很多问题和答案,我发现的主要思想是self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element),这就是我目前在我的代码中的内容。但这还不够好,因为此代码仅向下滚动,因此如果元素位于可滚动视图的上部,则无法找到该元素。
所以我需要一个首先向上滚动(向上翻页?)然后开始向下滚动的脚本。
我试过这样的事情
self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element)
self.web_driver.execute_script("window.scrollTo(0, -document.body.scrollHeight);")
self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element)
但这不会向上滚动:(
【问题讨论】:
-
一个元素是(只有一个)元素,你为什么要一次又一次地上下滚动才能看到元素?除非 DOM 发生变化,否则任何元素的位置都必须是固定的。
-
因为这个函数(find_the_element)应该是通用的,有时元素在视图的上侧,有时在视图的下侧,我不知道它在哪里。我需要将 XPATH 传递给函数,它会找到(点击)元素
-
确切地说,无论元素是向上还是向下,都会被显示出来。您只需传递 xpath。无需特别向上或向下滚动。
-
但是不行! self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element) 只向下滚动!不管脚本里面是真还是假
-
scrollIntoView应该向任何方向滚动。您可以将 URL 分享到不是这种情况的页面吗?
标签: javascript python selenium