1显示等待
类型:webdriverwait
使用准备: 需要导入
from selenium.webdriver.support.ui import WebDruverWait
from selenium.webdriver.supportimport expected_conditions as EC
扩展:webdriverwait一般与expected_conditions模块结合起来应用
#login=WebDriverWait(browser, 10).until(lambda x : browser.find_element_by_xpath('//*[@id="sign_in"]'))
login=WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sign_in"]')))
login.click() # 找到元素后点击
element_to_be_clickable 表示元素可见并且可操作
text_to_be_present_in_element 指定元素文本位置
visibility_of_element_located 判断元素是否可见
login=WebDriverWait(browser, 10,2).until(lambda x : browser.find_element_by_xpath('//*[@id="sign_in"]'))
每2秒检查一次
2.智能等待时间
browser.implicitly_wait(30)
browser.find_element_by_xpath('//*[@id="sign_in"]').click()
3.固定休眠时间
需要导入: import time
time.sleep(20)
browser.find_element_by_xpath('//*[@id="sign_in"]').click()
4.理解
WebDriverWait():显示等待,同样也是 webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException
implicitly_wait()不是休眠,而是设置超时时间,它的作用的全局的,也就是在一个脚本中只需要使用一次(作用范围是针对整个webdriver对象实例),在每次进行find_element时起作用,以IEDriverServer为例,implicitlyWait()会将一个超时的时间阀值传递给IEDriverServer,在findelement或者findelements的时候,首先去找web元素,如果没有找到,判断时间否超超过implicitlyWait()传递进来的阀值,如果没有超过,则再次找这个元素,直到找到元素或者时间超过最大阀值。