我正在尝试从看起来像link to the site
的网页中获取一些信息我需要一直向下滚动,我为此编写了一个函数。
def Scroll():
startPos = driver.execute_script("return window.pageYOffset;")
while 1:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") #need to wait
time.sleep(0.1)
newPos = driver.execute_script("return window.pageYOffset;")
if newPos == startPos:
break
startPos = newPos
return
我想用一些条件等待更改time.sleep(0.1),直到执行该行之前的行,有没有办法做到这一点?每次滚动后或页面末尾都没有加载特殊元素。
解决方案:
...
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
while 1:
if driver.execute_script("return jQuery.active == 0"):
break
else:
time.sleep(0.05)
continue
...
答案 0 :(得分:0)
而不是thread.sleep,您可以使用以下代码等待Ajax调用完成,因为每个滚动,后台都会有一个Ajax调用。
WebDriverWait wait=new WebDriverWait(driver, 120);
Wait.until(ExpectedConditions.jsReturnValue("return jQuery.active == 0"));