如何在python中使用selenium webdriver滚动网页?

我目前使用seleniumwebdriverparsing通过Facebook的用户朋友页面,并从AJAX脚本中提取所有id。 但我需要向下滚动以获得所有的朋友。 我如何在Selenium中向下滚动。 我正在使用python。

要么

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

滚动到页面的底部。

如果你想向下滚动到无限页面的底部 (如linkedin.com ),你可以使用下面的代码:

 SCROLL_PAUSE_TIME = 0.5 # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") while True: # Scroll down to bottom driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Wait to load page time.sleep(SCROLL_PAUSE_TIME) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height 

参考: https : //stackoverflow.com/a/28928684/1316860

相同的方法如下所示: https : //stackoverflow.com/a/12195714/725944

在Python中,你可以使用

 driver.execute_script("window.scrollTo(0, Y)") 

(Y是要滚动的垂直位置)

 element=find_element_by_xpath("xpath of the li you are trying to access") element.location_once_scrolled_into_view 

当我尝试访问一个不可见的“li”时,这有所帮助。

这些答案都没有为我工作,至less不是滚动Facebook的search结果页面,但我发现经过大量的testing这个解决scheme:

 while driver.find_element_by_tag_name('div'): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") Divs=driver.find_element_by_tag_name('div').text if 'End of Results' in Divs: print 'end' break else: continue