等待操作
为了保证脚本的稳定性,有时候需要引入等待时间,等待页面加载元素后再进行操作
selenium提供三种等待时间设置方式。
sleep()
固定休眠时间设置,python的time包里提供了休眠方法sleep, 导入包后就能使用;
sleep()方法以秒为单位,如果超时设置小于1秒,可以使用小数
import time
time.sleep(0.5)
implicitlyWait()
implicitlyWait()方法比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待,称为隐式等待
driver.implicitly_wait(100)
element=driver.find_element_by_css_selector("div.red_box")
备注:设置等待时间100s,页面上的元素5s后出现,只等待5s。不会等待100秒
WebDriverWait()
显示等待,语法格式如下:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignore_exceptions=None)
- driver:WebDriver的驱动程序(IE,火狐,谷歌或远程)
- timeout:最长超时时间,默认以秒为单位
- poll_frequency:休眠时间的间隔(步长)时间,默认为0.5秒(即每500毫秒扫描 一次页面)
- ignore_exceptions:超时后的异常信息,默认情况下抛
- NoSuchElementException异常
举例:
from selenium.webdriver.support.ui import WebDriverWait
#引入WebDriverWait类
element=WebDriverWait(driver,3).until(lambda x:
x.find_element_by_css_selector(div.red_box"))
今天太阳也东升,而后西沉,早晨盛开的花儿也将凋谢;今天的太阳也西沉,而后东升,阳光照射之处遍地花开,但却已非昨日之花。