如何等到页面自动滚动完成
How to wait until page auto scroll completed
关于问题,我想知道有没有办法等到页面自动滚动完成?
问题是当你第一次点击分页的"Next"("Volgende"
)按钮时(URL
是https://www.iens.nl/restaurant+utrecht)webdriver
将您重定向到下一页并自动向上滚动到页面顶部。所以如果执行
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"])')))
关于
问题是当你第一次点击分页的"Next"("Volgende"
)按钮时(URL
是https://www.iens.nl/restaurant+utrecht)webdriver
将您重定向到下一页并自动向上滚动到页面顶部。所以如果执行
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"])')))