[Selenium自動(dòng)化測(cè)試實(shí)戰(zhàn)]如何設(shè)置等待

問題

在WEB自動(dòng)化測(cè)試中,頁面元素的記載需要時(shí)間,如果需要操作的元素沒有在一定時(shí)間內(nèi)出現(xiàn)洒沦,那么腳本將出錯(cuò)并且終止幕与,這將影響自動(dòng)化腳本的執(zhí)行效率挑势。
還有一個(gè)常見的場(chǎng)景就是需要等待某個(gè)元素的出現(xiàn),或者等待元素的某個(gè)屬性發(fā)生變化啦鸣,例如處于被激活狀態(tài)潮饱,然后再進(jìn)行操作。這些都需要在腳本中對(duì)等待進(jìn)行相應(yīng)的處理诫给。

解決方法

在selenium中香拉,有兩種等待:

  • 顯示等待 Explicit Waits
    顯示等待是通過代碼,等待到某個(gè)一定的條件發(fā)生中狂,然后繼續(xù)進(jìn)行代碼凫碌。最簡(jiǎn)單的處理是用sleep,它將條件設(shè)置為等待的確切時(shí)間段胃榕。 這種處理方式的缺點(diǎn)是無論條件什么時(shí)候滿足盛险,都要等待固定的時(shí)間,嚴(yán)重影響了執(zhí)行的效率勋又。更加合理的方法是使用WebDriverWait與ExpectedCondition結(jié)合苦掘, 等待到某個(gè)條件出現(xiàn)的時(shí)候就立即繼續(xù)執(zhí)行腳本。
  • 隱式等待 Implicit Waits
    隱式等待就是告訴WebDriver在查找一個(gè)或多個(gè)元素(如果不是立即可用的)時(shí)輪詢DOM一段時(shí)間楔壤。 默認(rèn)設(shè)置為0鹤啡。一旦設(shè)置,隱式等待就會(huì)在整個(gè)WebDriver對(duì)象實(shí)例的生命周期中生效蹲嚣。

實(shí)例分析

顯式等待

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "http://www.reibang.com/faqs"

wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
begin
  element = wait.until { driver.find_element(:class => "category-title") }
ensure
  driver.quit
end

Selenium::WebDriver::Wait類是selenium中處理等待的類递瑰。默認(rèn)的超時(shí)是Selenium::WebDriver::Wait::DEFAULT_TIMEOUT = 5, 也就是5s祟牲。默認(rèn)的檢查條件的周期是Selenium::WebDriver::Wait:: DEFAULT_INTERVAL = 0.2, 也就是每0.2s檢查一次條件是否成立泣矛。
在創(chuàng)建wait對(duì)象的時(shí)候可以設(shè)置你需要的:timeout值疲眷。超過這個(gè)等待時(shí)間條件還是FALSE的話,將拋出Selenium::WebDriver::Error::TimeOutError您朽。
Selenium::WebDriver::Wait類的實(shí)例方法until是用來判定條件是否在:timeout內(nèi)為true狂丝。
判定條件可以設(shè)置為和元素相關(guān)的方法,例如:
element.enabled?, element.displayed?哗总。還可以通過獲取元素的CSS屬性來進(jìn)行判斷几颜,實(shí)現(xiàn)豐富的等待功能。

隱式等待

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.manage.timeouts.implicit_wait = 10 # seconds

driver.get "http://www.reibang.com/faqs"
element = driver.find_element(:class => "category-title")

隱式等待的設(shè)置并不是針對(duì)某個(gè)特定的條件讯屈,而是判斷是否能夠在DOM中找到元素蛋哭,也就是Selenium::WebDriver類的實(shí)例方法find_element是否成功的返回元素。
這個(gè)設(shè)置是通過執(zhí)行Selenium::WebDriver::Timeouts類的實(shí)例方法implicit_wait來實(shí)現(xiàn)涮母。而timeoutsSelenium::WebDriver::Options類的實(shí)例方法谆趾。要得到Selenium::WebDriver::Options類的實(shí)例,需要執(zhí)行Selenium::WebDriver的實(shí)例方法manage叛本。
需要注意的是沪蓬,這個(gè)值的設(shè)定將在Selenium::WebDriver的實(shí)例對(duì)象的整個(gè)生命周期生效,所以一旦設(shè)定一個(gè)較大的值来候,將影響整個(gè)腳本的執(zhí)行效率跷叉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市营搅,隨后出現(xiàn)的幾起案子云挟,更是在濱河造成了極大的恐慌,老刑警劉巖转质,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件园欣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡休蟹,警方通過查閱死者的電腦和手機(jī)沸枯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸡挠,“玉大人辉饱,你說我怎么就攤上這事搬男〖鹫梗” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵缔逛,是天一觀的道長备埃。 經(jīng)常有香客問我姓惑,道長,這世上最難降的妖魔是什么按脚? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任于毙,我火速辦了婚禮,結(jié)果婚禮上辅搬,老公的妹妹穿的比我還像新娘唯沮。我一直安慰自己,他們只是感情好堪遂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布介蛉。 她就那樣靜靜地躺著,像睡著了一般溶褪。 火紅的嫁衣襯著肌膚如雪币旧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天猿妈,我揣著相機(jī)與錄音吹菱,去河邊找鬼。 笑死彭则,一個(gè)胖子當(dāng)著我的面吹牛鳍刷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贰剥,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼倾剿,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蚌成?” 一聲冷哼從身側(cè)響起前痘,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎担忧,沒想到半個(gè)月后芹缔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瓶盛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年最欠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惩猫。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芝硬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轧房,到底是詐尸還是另有隱情拌阴,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布奶镶,位于F島的核電站迟赃,受9級(jí)特大地震影響陪拘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纤壁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一左刽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酌媒,春花似錦欠痴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拭荤,卻和暖如春茵臭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舅世。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國打工旦委, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雏亚。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓缨硝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親罢低。 傳聞我的和親對(duì)象是個(gè)殘疾皇子查辩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

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