1、element_to_be_clickable(locator)是等待页面元素可见的时候操作,会设置一定范围的时间,如果在时间范围内,元素可见,就执行操作,元素不可见,就会引发TimeoutException的异常。如下是element_to_be_clickable
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
driver=webdriver.Firefox()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
so=WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable((By.ID,'kwkw')))
so.send_keys('appium')
driver.quit()
2.、text_to_be_present_in_element(locator,text)是指定页面元素的文本位置,一般用于验证一个文本信息或者错误的信息,我们任然以百度登录为案例,用户名和密码为空,点击登录按钮,验证在指定的时间范围内会不会出现"请您填写手机/邮箱/用户名"的错误信息,见实现的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
import time as t
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
t.sleep(3)
driver.find_element_by_id('u1').find_element_by_class_name('lb').click()
driver.find_element_by_id('TANGRAM__PSP_8__submit').click()
WebDriverWait(driver,10).until(expected_conditions.text_to_be_present_in_element((By.CSS_SELECTOR,"#TANGRAM__PSP_8__error"),u'请您填写手机/邮箱/用户名'))
3.visibility_of_element_located(locator)是元素可见后再执行其他的操作,如百度首页的“关于百度”,我们想点击它,先验证是否可见,如果可见,再点击,见实现的代码:
element=WebDriverWait(driver,10).until(expected_conditions.visibility_of_element_located((By.XPATH,".//*[@id='lh']/a[3]")))
4.implicitly_wait()方法是隐式等待,用来设置超时,一般把implicitly_wait()方法调用在加载测试地址后,等待所测试的 应用程序加载,这样就会有一个缓充的过程,
5.WebDriverWait()是显式等待,也就是说会明确等待的时间。我们还是已百度搜索为实例,来演示显式等待在自动化中的实际应用
locator=WebDriverWait(driver,10).until(expected_conditions.visibility_of_element_located((By.ID,'kw')))