关于this问题,我想知道是否有办法等到页面自动滚动完成?
问题在于,当您第一次点击分页上的“下一步”("Volgende"
)按钮时URL
为https://www.iens.nl/restaurant+utrecht)webdriver
会将您重定向到下一页并自动向上滚动到页面顶部。所以如果要执行
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
中切换Firefox
到about:config
不会产生任何影响
答案 0 :(得分:1)
html包含标记为<main>
的元素,当页面未向上滚动时,该元素会接收属性style
。我建议您等到标签没有具有此属性
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'main:not([style*="margin-top"])')))