设置元素等待-----元素定位时的操作
1.sleep(s) python time模块下面的方法
2.implicitly_wait(s) webdriver隐式等待
3.显示等待 seleniu模块中的EC类提供的方法
sleep:强制等待,比如sleep(50)强制等待50秒,50之内不做任何事情。
implicitly_wait(s):隐式等待比如implicitly_wait(100)在100以内,如果元素在第三秒被加载出来,自动执行下面的脚本,不会一直等待100s,如果说在超过100秒以外,元素依然没有被加载出来,那就会报错!NosuchElementError错。改方法是webdriver api 提供的方法
webdriver提供的方法都要用dr.这样的句柄来写比如dr.get("www.baidu.com")
#隐式等待
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("www.baidu.com")
dr.implicitly_wait(100)
dr.find_element_by_id("kw").send_keys("123")
dr.find_element_by_id("su").click()
dr.quit()
3.显示等待(自动化优先用)
#要先引入类
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By #By元素定位的封装的另一种写法
#显示等待
try:
element = WebDriverWait(dr,5,0.5) .until(EC.presence_of_element_located((By.ID,"kw")))
element.send_keys("123")
sleep(3)
dr.find_element_by_id("su").click()
except Exception as a
pass
finally:
dr.quit()
#(dr,5,0.5):表示获取驱动,最多等待5秒,每0.5秒检查元素是否加载出来。加载出来了就运行下边的代码,没加载出来那就0.5秒0.5秒的叠加直到加载出来为止