selenium的三種等待方式

sleep 強(qiáng)制等待

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

browser = webdriver.Chrome()
browser.get("http://localhost/selenium/myForm.html")

username_input = browser.find_element(by=By.ID, value="id01")
username_input.send_keys("aaa")

time.sleep(10) # 強(qiáng)制停止10s

password_input = browser.find_element(by=By.NAME, value="pwd")
password_input.send_keys("123456")

implicitly_wait 隱性等待

from selenium import webdriver

browser = webdriver.Chrome()
browser.implicitly_wait(3) # 最長(zhǎng)等待時(shí)間
browser.get("http://localhost/selenium/myForm.html")

WebDriverWait 顯性等待

一般結(jié)合until()或者until_not()expected_conditions類使用

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select

browser = webdriver.Chrome()  # 創(chuàng)建瀏覽器對(duì)象
browser.get("http://localhost/selenium/myForm.html")

timer = WebDriverWait(driver=browser, timeout=3) # 生成WebDriverWait對(duì)象,設(shè)置超時(shí)時(shí)間
ec_obj = EC.presence_of_element_located(locator=(By.XPATH, '//*[@id="id_sub123"]')) # 生成ec對(duì)象,判斷元素是否被加到了 dom 樹(shù)里
try:
    sub_btn = timer.until(ec_obj) # 嘗試等待元素出現(xiàn)
except NoSuchElementException:
    browser.save_screenshot(filename='./Screenshots/error_useTimer.png') # 元素不存在時(shí)截圖
except TimeoutException:
    browser.save_screenshot(filename='./Screenshots/error_timeout.png') # 超時(shí)時(shí)截圖
else:
    sub_btn.click()
    browser.back()
finally:
    pass 

expected_conditions的常用方法

方法 說(shuō)明
title_is 判斷當(dāng)前頁(yè)面的 title 是否完全等于(==)預(yù)期字符串斗躏,返回布爾值
title_contains 判斷當(dāng)前頁(yè)面的 title 是否包含預(yù)期字符串攻谁,返回布爾值
presence_of_element_located 判斷元素是否被加到了 dom 樹(shù)里(注意裁僧,加載到dom樹(shù)中意荤,并不代表這個(gè)元素可見(jiàn))
presence_of_all_elements_located 判斷是否至少有 1 個(gè)元素存在于 dom 樹(shù)中。舉例:如果頁(yè)面上有 n 個(gè)元素的 class 都是’wp’陪拘,那么只要有 1 個(gè)元素存在菜枷,這個(gè)方法就返回 True
visibility_of_element_located 判斷元素是否可見(jiàn)
visibility_of 同visibility_of_element_located方法,只是visibility_of_element_located方法參數(shù)為locator涮较,這個(gè)方法參數(shù)是 定位后的元素
text_to_be_present_in_element 判斷某個(gè)元素中的 text 是否 包含 了預(yù)期的字符串
text_to_be_present_in_element_value 判斷某個(gè)元素中的 value 屬性是否包含 了預(yù)期的字符串
frame_to_be_available_and_switch_to_it 判斷該 frame 是否可以 switch進(jìn)去稠鼻,如果可以的話,返回 True 并且 switch 進(jìn)去狂票,否則返回 False
invisibility_of_element_located 判斷某個(gè)元素中是否不存在于dom樹(shù)或不可見(jiàn)
element_to_be_clickable 判斷某個(gè)元素中是否可見(jiàn)并且可點(diǎn)擊
staleness_of 等某個(gè)元素從 dom 樹(shù)中移除候齿,返回 True或 False
element_to_be_selected 判斷某個(gè)元素是否被選中了,一般用在下拉列表
element_selection_state_to_be 判斷某個(gè)元素的選中狀態(tài)是否符合預(yù)期
element_located_selection_state_to_be 跟上面的方法作用一樣,只是上面的方法傳入定位到的 element闺属,而這個(gè)方法傳入 locator
alert_is_present 判斷頁(yè)面上是否存在 alert
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末慌盯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掂器,更是在濱河造成了極大的恐慌亚皂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唉匾,死亡現(xiàn)場(chǎng)離奇詭異孕讳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)巍膘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)厂财,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人峡懈,你說(shuō)我怎么就攤上這事璃饱。” “怎么了肪康?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵荚恶,是天一觀的道長(zhǎng)撩穿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)谒撼,這世上最難降的妖魔是什么食寡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮廓潜,結(jié)果婚禮上抵皱,老公的妹妹穿的比我還像新娘。我一直安慰自己辩蛋,他們只是感情好呻畸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著悼院,像睡著了一般伤为。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上据途,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天绞愚,我揣著相機(jī)與錄音,去河邊找鬼昨凡。 笑死爽醋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的便脊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼光戈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哪痰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起久妆,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晌杰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后筷弦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肋演,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年烂琴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爹殊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奸绷,死狀恐怖梗夸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情号醉,我是刑警寧澤反症,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布辛块,位于F島的核電站,受9級(jí)特大地震影響铅碍,放射性物質(zhì)發(fā)生泄漏润绵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一胞谈、第九天 我趴在偏房一處隱蔽的房頂上張望尘盼。 院中可真熱鬧,春花似錦呜魄、人聲如沸悔叽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)娇澎。三九已至,卻和暖如春睹晒,著一層夾襖步出監(jiān)牢的瞬間趟庄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工伪很, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戚啥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓锉试,卻偏偏與公主長(zhǎng)得像猫十,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呆盖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 強(qiáng)制等待:sleep() import timesleep(5) #等待5秒 設(shè)置固定休眠時(shí)間拖云,單位為秒。 由py...
    uaolin閱讀 802評(píng)論 0 0
  • 隱式等待:implicitly_wait(time) time默認(rèn)為0 原理:瀏覽器在查找元素的時(shí)候沒(méi)有找到应又,就會(huì)...
    kimber0316閱讀 534評(píng)論 0 1
  • 導(dǎo)讀:本文介紹兩個(gè)大的知識(shí)點(diǎn):1宙项、selenium顯示等待WebDriverWait與條件判斷expected_c...
    軟測(cè)小生閱讀 1,743評(píng)論 0 0
  • 作者:Gakki 前言 在瀏覽器加載一個(gè)頁(yè)面時(shí),頁(yè)面內(nèi)得元素可能是在不同的時(shí)間載入的株扛,這會(huì)加大定位元素的困難程度尤筐,...
    Gakki0725閱讀 1,845評(píng)論 0 0
  • 在使用selenium自動(dòng)化測(cè)試的過(guò)程中,必然會(huì)遇到環(huán)境不穩(wěn)定洞就,網(wǎng)絡(luò)慢的情況盆繁,這時(shí)如果不做任何處理的話,經(jīng)常會(huì)因代...
    z761943閱讀 1,347評(píng)論 1 1