webdriver显式和隐式等待、强制等待

UI自动化各种等待:
强制等待:强制性让代码等待XX时间,等待后继续执行下一步操作。
隐式等待:这种方法是设置一个最长的等待时间,如果在规定时间内网页全部元素加载完成,则执行下一步,否则一直等待时间截止才抛出异常。
显式等待:根据条件灵活的等待,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。

区别:显示等待比隐式等待更加灵活,可以设置不同的等待时间和条件来等待元素的出现、可点击、可见等状态。在需要等待特定条件的情况下,使用显示等待可以更精确地控制等待时间。
强制等待(固定时间)
隐式等待(全局通用,只需设置一次)
显式等待(针对单个元素,灵活、自定义)

 

implicitly_wait() 方法隐式等待,用来设置超时,一般把implicitly_wait()方法调用在加载测试地址后,等待所测试的应用程序加载
WebDriverWait() 显式等待
time.sleep() 强制等待

from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium import webdriver
driver
=webdriver.Chrome() driver.maximize_window() driver.get('https://baidu.com') driver.implicitly_wait(30) #元素是否出现可点 ,参数是locator xinwei=WebDriverWait(driver,5).until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'.mnav'))) xinwei.click() #验证相应位置元素的文本信息,返回值是布尔 俩参数locator text driver.find_element_by_xpath(".//*[@id='u1']/a[7]").click() driver.find_element_by_id('TANGRAM__PSP_10__userName').send_keys('123') driver.find_element_by_id('TANGRAM__PSP_10__submit').click() bo=WebDriverWait(driver,5).until(expected_conditions.text_to_be_present_in_element((By.CSS_SELECTOR,'#TANGRAM__PSP_10__error'),'请您输入密码')) print(bo)#打印结果:True #元素是否可见,可见后操作 参数是locator sou=WebDriverWait(driver,5).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR,'#kw'))) sou.send_keys('java') driver.quit()

 

posted @ 2019-07-25 18:58  南方的墙  阅读(428)  评论(0编辑  收藏  举报