如何将页面滚动到最后

时间:2016-04-08 00:08:25

标签: python selenium scroll

我试过这样做:

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 个答案:

答案 0 :(得分:2)

你需要一些东西可以依赖,有些指标可以让你停止滚动。这是一个示例用例,如果已经加载了超过N个特定元素,我们将停止滚动:

类似的用例:

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

footer = driver.find_element_by_tag_name("footer")
driver.execute_script("arguments[0].scrollIntoView();", footer)

答案 1 :(得分:0)

要将页面滚动到最后,您只需发送END键:

#gform_20

您也可以滚动整个高度:

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)

答案 2 :(得分:0)

嘿,我找到了另一种对我来说完美的解决方案。 Check this answer here.     这个实现也是:     sqoop import --query 'select a, b, null as c, null as d from tbl where $CONDITIONS' 不适用于使用无限滚动设计的网页。