Web自动化测试-Webdriver之元素等待

Webdriver---元素等待(显示等待)

 

  • 元素等待的概念

因为网络原因,有时要等待很久才会出现网页,那么就会影响查找元素及定位元素。

显示等待是针对某一个元素进行相关等待判定

(显示等待,相当于等待具体的某一个元素,直到等到它出现为止)

隐式等待不针对某一个元素进行等待,全局元素等待

(隐式等待不针对个别元素,只是给一个固定的时间进行等待)

 

 

  • 相关模块

WebDriverWait显示等待针对元素必用

Expected_conditions预期条件类(里面包含方法可以调用,用于显示等待)

NoSuchElementException用于隐式等待抛出异常

By用于元素定位

 

From selenium import webdriver

From selenium.webdriver.common.by import By

From selenium webdriver.support.ui import  WebDriverWait

From selenium.webdriver.support import exected_conditions as EC

From selenium.common.exceptions import NoSuchElementException

 

 

  1. 显示等待

案例:

检测百度页面搜索按钮是否存在,存在就输入关键词“selenium”然后点击搜索

 

from  selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from time import sleep

 

driver=webdriver.Firefox()

driver.get("https://www.baidu.com")

driver.find_element_by_css_selector("#kw").send_keys("selenium")

sleep(2)

element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,"su")))

element.click()

sleep(3)

driver.quit()

 

 

注意:第3行代码中”as EC”表示取别名

第11行中,表示在5秒内,每隔0.5秒检查一次元素,是否找到搜索按钮元素

 

 

2、隐式等待

 

 

from selenium import webdriver

from selenium.common.exceptions import NoSuchElementException

from time import sleep,ctime

 

driver=webdriver.Firefox()

driver.get("https://www.baidu.com")

sleep(2)

#隐式等待5秒

driver.implicitly_wait(5)

 

try:

    #打印当前时间,按秒计时

    print(ctime())

    #等待以下2个元素

    driver.find_element_by_css_selector("#kw").send_keys("selenium")

    driver.find_element_by_css_selector("#su").click()

#若出现 异常,就把异常打印出来

except NoSuchElementExceptionas as msg:

    print(msg)

finally:

    打印结束的时间

    print(ctime())

 

sleep(2)

driver.quit()

来源:千锋软件测试

猜你喜欢

转载自blog.csdn.net/IT_studied/article/details/90269180