我试过这样做:
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 >>>>'
它有点工作,但我不知道一个给定的页面有多长,所以我必须把一个大数字作为最大高度,这给了我两个问题。首先,即使是一个大的数字也不能大,只能滚动一些页面,第二个是如果页面短于那个限制,那么等待脚本在无所事事时完成时会花费相当多的时间
答案 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'
不适用于使用无限滚动设计的网页。