当前位置: 首页 > 知识库问答 >
问题:

如何将页面滚动到最后

边健
2023-03-14

我尝试过这样做:

driver_1.execute_script("window.scrollTo(0, document.body.scrollHeight);")

但是它什么也不做,所以我做了一个循环来按步骤滚动页面:

initial_value = 0
end = 300000
for i in xrange(1000,end,1000):
    driver_1.execute_script("window.scrollTo(" + str(initial_value) + ', ' +  str(i) + ")")
    time.sleep(0.5)
    initial_value = i
    print 'scrolling >>>>'

它有点工作,但我不知道一个给定的页面有多长,所以我必须输入一个大的数字作为最大高度,这给了我两个问题。第一个是,即使是一个很大的数字也不足以滚动某些页面,第二个是,如果页面短于此限制,那么当脚本什么都不做时,等待脚本完成的时间会损失很多

共有3个答案

楚宏胜
2023-03-14

嘿,我找到了另一个非常适合我的解决方案。在这里检查这个答案。还有这个实现:驱动程序。通过标签名称(“正文”)查找元素。send_keys(keys.END)不适用于使用无限滚动设计的页面。

边健
2023-03-14

要将页面滚动到最后,您可以简单地发送END键:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/search?tab=newest&q=selenium")
driver.find_element_by_tag_name("body").send_keys(Keys.END)

您还可以滚动整个高度:

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/search?tab=newest&q=selenium")
driver.execute_script("window.scrollBy(0, document.documentElement.scrollHeight)")
马庆
2023-03-14

你需要依靠一些东西,一些指示器来停止滚动。下面是一个示例用例,如果已经加载了N个以上的特定元素,我们将停止滚动:

  • 使用Selenium缓慢向下滚动页面

类似用例:

  • 无头卷轴

仅供参考,您可能已经注意到另一种滚动到底部的方式-滚动到页脚视图中

footer = driver.find_element_by_tag_name("footer")
driver.execute_script("arguments[0].scrollIntoView();", footer)
 类似资料:
  • 我正在使用Appium测试混合android应用程序。我想滚动到页面底部,然后点击一个链接。谁能告诉我如何滚动到页面底部吗。 非常感谢!

  • 问题内容: 考虑我有一个问题清单。当我单击第一个问题时,它应该自动带我到页面底部。 实际上,我确实知道可以使用jQuery完成此操作。 因此,您能为我提供一些文档或一些链接,以找到该问题的答案吗? 编辑:需要滚动到页面底部的特定HTML 元素 问题答案: 不需要jQuery。我从Google搜索获得的大多数热门结果都给了我这个答案: 在嵌套元素的地方,文档可能不会滚动。在这种情况下,您需要定位要滚

  • 我有一个问题清单。当我点击第一个问题时,它应该会自动把我带到页面底部。 事实上,我确实知道这可以使用jQuery来完成。 所以,你能给我一些文件或一些链接,我可以找到这个问题的答案吗? 编辑:需要滚动到页面底部的特定HTML元素

  • 问题内容: 我想让浏览器仅使用JavaScript即可将页面滚动到给定的锚点。 我在HTML代码中指定了或属性: 要么 通过导航到,我希望获得与您相同的效果。应滚动页面,使锚点位于页面可见部分的顶部附近。 问题答案: 完全不需要jQuery!

  • 问题内容: 有没有一种方法可以使用JavaScript / jQuery控制浏览器滚动? 当我向下滚动页面一半,然后触发重新加载时,我希望页面进入顶部,但它会尝试找到最后一个滚动位置。所以我这样做: 但是没有运气。 编辑 : 因此,当页面加载后,我打电话给您时,您的两个答案都有效。但是,如果我只是在页面上刷新,则看起来浏览器会在事件发生后计算并滚动到其旧的滚动位置(我也测试了body onload

  • 问题内容: selenium: 我是WebDriverJS的新手。我已经在Java中尝试了这种方法。 但是我在循环时遇到了webdriverjs中的问题。 在我的代码中, 我对循环进行了硬编码,直到50次为止,并且要在达到滚动高度结束时退出/中断循环 。在这种方法中,我想删除诸如Java代码之类的硬代码,因为 我不知道对于滚动不断增加的其他应用程序要迭代多少次 。例如,Facebook应用程序,Y