webdriver_api_设置元素等待

设置元素等待-----元素定位时的操作

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秒的叠加直到加载出来为止

你可能感兴趣的:(webdriver_api_设置元素等待)