我有一个动态页面,当用户向下滚动页面时加载产品。我想得到显示页面上呈现的产品总数。目前,我使用以下代码到达底部,直到所有产品都显示出来。

elems = WebDriverWait(self.driver, 30).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "x")))
print len(elems)
a = len(elems)
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)
elem1 = WebDriverWait(self.driver, 30).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "x")))
b = len(elem1)
while b > a:
    self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(4)
    elem1 = WebDriverWait(self.driver, 30).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "x")))
    a = b
    b = len(elem1)
print b

这很有效,但我想知道是否有更好的选择?

最佳答案

您可以使用这行代码轻松地执行此操作

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

如果你想永远向下滚动,你应该试试这个。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Firefox()
driver.get("https://twitter.com/BarackObama")

while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)

我不确定时间。睡眠(x值)导致加载数据需要更长时间。或者更少……
有关更多信息,请查看official Doc page
玩得开心:)

09-30 14:52
查看更多