web自动化之三大等待

这个假期有些长,长到忘记了要学习,要找工做,好吧,在我天天无休止的追着偶像剧时,我确实没有负罪感,在听了小祥大佬的分享后,我连睡午觉都被吓醒。大佬跟我同一个班,在大厂工做,天天还抽时间学习,做业也没落下,看看本身,再对比下别人,终于明白,我拿不到高薪原来是有缘由的,话很少说,从昨天开始我进入了web自动化的学习,今天整理了下三大等待方式,特此作个笔记吧,后续忘记了能够再review。web

等待分为三种:浏览器

1.等待(俗称傻等) time.sleep(2)学习

这种等待就按照设定的时间,傻傻的等待,配合着第三种等待来使用ui

2.隐性等待  implicitly_wait(30)spa

放在开始与浏览器对话开始,对于当前页面来讲,隐性的等待,超过了等待时间才会抛出异常ci

做用:1.等待元素被找到,2.等待命令执行完成element

3.显式等待 get

全部条件都是明确指出来,等待条件存在以后,再进行后续的代码执行selenium

等待:webdriverwait 条件:expected_conditionit

等待20秒 检测条件成立的间隔:默认是0.5秒

上段代码,就好理解了

 

 

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#开始与浏览器的会话
dr = webdriver.Chrome()
#当前页面,隐性等待30秒
dr.implicitly_wait(30)

dr.get('http://www.baidu.com')
#动做,点击登陆连接
dr.maximize_window() #窗口最大化
time.sleep(2)

#查找元素,点击登陆连接动做
loc = (By.XPATH,'//*[@id="u1"]//a[@name="tj_login"]')
dr.find_element(*loc).click()
time.sleep(3)

#等待xxx元素可见
#1.元素定位表达式
loc = (By.ID,'TANGRAM__PSP_10__footerULoginBtn')
#1.WebDriverWait(dr,20,1),第一个参数把当前的会话传给它,第二个参数是等待的最长时间,第三个参数是轮询时间为1s,默认是0.5秒。能够不用填写
#2.until(EC.visibility_of_element_located(loc))直到元素可见时就执行,参数为:loc元组,通常用元组不可变来表达
WebDriverWait(dr,20,1).until(EC.visibility_of_element_located(loc))

#查找登陆帐号的元素,作点击操做
dr.find_element(*loc).click()
time.sleep(2)
#结束会话
dr.quit()

那么何时须要等待?
元素操做以前,稳妥起见,都须要等一等
相关文章
相关标签/搜索