Selenium是通过浏览器驱动驱动浏览器加载网页,模拟正常的网页浏览,由于网页的加载过程会比较复杂,例如它不但会加载图片、样式表等资源,如果有自动加载的Ajax请求,还会发起Ajax请求,因此,如何判断Selenium是否已加载完成,就会变得复杂,需要按需要使用。
目前判断Selenium是否加载完成,主要的有三种方式:
第一种方法:WebDriverWait
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
browser = webdriver.Chrome()
browser.get("http://www.mirthsoft.com")
try:
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:
browser.quit()
这里是通过检查指定的元素(这里是id="myDynamicElement")是否存在,如果存在则结束等。这种情况一般在判断动态加载的页面是否加载完成时非常高效。
第二种方法:implicitly_wait
from selenium import webdriver
browser = webdriver.Chrome()
browser.implicitly_wait(10) # seconds
browser.get("http://www.mirthsoft.com")
这里implicitly_wait,设置整个页面的超时时间,超过10指定的时间后,认为是网页加载完成。
第三种方法:time.sleep
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.mirthsoft.com")
time.sleep(10)
指定加载网页10秒后,认为是网页加载完成。