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

How to wait until page auto scroll completed

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

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

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

目前唯一要一直点击 "Next" 按钮直到到达最后一页的解决方案是使用 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。另外我想知道是否有可能禁用页面自动滚动功能。在 Firefox about:config 中将 general.autoScroll 切换为 False 没有任何效果

html 包含带有标签 <main> 的元素,当页面没有一直向上滚动时,该元素接收属性 style。我建议你等到标签没有有这个属性

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