UI自动化测试——WebDriverWait类详解
WebDriverWait类方法(等待)
1、使用背景
在UI的自动化测试中,由于网络加载慢的问题导致资源加载不出来,从而影响测试的效率,通过WebDriverWait类中的方法可以解决此问题。
2、WebDriverWait类方法分类
1)固定等待,也就是使用sleep()方法
2)隐式等待,使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间
3)显式等待,主要指的是程序每隔一段时间执行自定义的程序判断条件,
如果判断成立,程序就会继续执行,那么如果判断失败,就会报TimeOutExpection的异常信息
3、使用环境
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as es
from selenium.webdriver.common.by import By
4、WebDriverWait类方法的应用
'''固定等待'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
#固定等待5秒
t.sleep(5)
driver.quit()
'''隐形等待'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
#最长等待60秒
driver.implicitly_wait(60)
driver.quit()
'''显现等待'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
#最长等待60秒
driver.implicitly_wait(60)
#实例化,要求,在浏览器的驱动下(driver=),最长响应时间10秒(timeout=),元素ID可见时进行操作下(element_to_be_clickable())运行(method=).
so=WebDriverWait(driver=driver,timeout=10).until(method=es.element_to_be_clickable((By.ID,'kw')))
so.send_keys('中国')
t.sleep(3)
driver.quit()
5、实战
1)指定元素的文本位置(加载文本信息)
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
driver.implicitly_wait(60)
driver.find_element_by_class_name('loginBtn').click()
#text_to_be_present_in_element():加载文本信息
so=WebDriverWait(driver=driver,timeout=10).until(
method=es.text_to_be_present_in_element(
(By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]'),text_='请输入邮箱名'
)
)
t.sleep(3)
driver.quit()
2)判断元素是否可见
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(60)
#visibility_of_element_located():判断是否可见
so=WebDriverWait(driver=driver,timeout=10).until(method=es.visibility_of_element_located((By.LINK_TEXT,'关于百度')))
print(so.text)
so.click()
t.sleep(3)
driver.quit()