如何等到页面自动滚动完成

时间:2016-12-08 10:54:32

标签: python selenium selenium-webdriver autoscroll

关于this问题,我想知道是否有办法等到页面自动滚动完成?

问题在于,当您第一次点击分页上的“下一步”("Volgende")按钮时URLhttps://www.iens.nl/restaurant+utrechtwebdriver会将您重定向到下一页并自动向上滚动到页面顶部。所以如果要执行

WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Volgende'))) 再次,在重定向之后,webdriver会找到按钮,但是当焦点向上移动大约一秒时,点击其他元素。

目前只有解决方案是继续点击“下一步”按钮,直到达到最后一页才能使用time.sleep

while True:
    try:
        click_icon = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Volgende')))
        click_icon.click()
        time.sleep(2)  # to wait until page scrolled
    except:
        break

但这显然不是最好的主意......

P.S。另外我想知道是否有可能禁用页面自动滚动功能。在general.autoScroll False中切换Firefoxabout:config不会产生任何影响

1 个答案:

答案 0 :(得分:1)

html包含标记为<main>的元素,当页面未向上滚动时,该元素会接收属性style。我建议您等到标签没有具有此属性

WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'main:not([style*="margin-top"])')))