這個假期有些長,長到忘記了要學習,要找工做,好吧,在我天天無休止的追着偶像劇時,我確實沒有負罪感,在聽了小祥大佬的分享後,我連睡午覺都被嚇醒。大佬跟我同一個班,在大廠工做,天天還抽時間學習,做業也沒落下,看看本身,再對比下別人,終於明白,我拿不到高薪原來是有緣由的,話很少說,從昨天開始我進入了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()
那麼何時須要等待?
元素操做以前,穩妥起見,都須要等一等