sleep() 强制等待
-
sleep() :强制等待,设置固定休眠时间,单位为秒。
-
强制等待是利用python语言自带的time库中的sleep()方法
-
缺点:等待的时间不能准确的去设置。
- 有可能太长,页面已经加载完成了,却还在等待;——降低效率
- 也可能太短,等待时间结束了,页面还没加载完成。——降低脚本的健壮性
# 引入sleep from time import sleep # 强制等待 5 秒后再执行下一步操作 sleep(5) -
implicitly_wait() 隐式等待
-
implicitly_wait() :隐式等待,用来等待页面加载完成(直观的就是浏览器tab页上的小圈圈转完)
- 隐式等待相比强制等待更智能。顾明思义,在脚本中我们一般看不到等待语句,但是它会在每个页面加载的时候自动等待;
- 隐式等待只需要声明一次,一般在打开浏览器后进行声明。声明之后对整个drvier的生命周期都有效(全局有效),后面不用重复声明。
- implicitly_wait(10),超时时间10s,10秒内一旦加载完成,就执行下一条语句;如果10秒内页面都没有加载完,就超时抛出异常。
driver.implicitly_wait(5)
WebDriverWait() 显示等待
-
WebDriverWait() :显示等待, 显示等待与隐式等待相对,显示等待必须在每个需要等待的元素前面进行声明。
# 引入WebDriverWait from selenium.webdriver.support.ui import WebDriverWait # 引入expected_conditions类,并重命名为EC from selenium.webdriver.support import expected_conditions as EC # 引入By类 from selenium.webdriver.common.by import By # 创建浏览器对象 driver = webdriver.Chrome() # 设置等待时间10秒,每隔0.5秒调用一次方法 wait = WebDriverWait(driver, 10, 0.5) wait.until(EC.presence_of_element_located((By.ID,'KW')))