国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

webdriver 的三種等待方式(強(qiáng)制等待、隱式等待、顯示等待)

這篇具有很好參考價(jià)值的文章主要介紹了webdriver 的三種等待方式(強(qiáng)制等待、隱式等待、顯示等待)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在自動(dòng)化測(cè)試腳本的運(yùn)行過(guò)程中,webdriver操作瀏覽器的時(shí)候,對(duì)于元素的定位是有一定的超時(shí)時(shí)間,大致應(yīng)該在1-3秒的樣子,如果這個(gè)時(shí)間內(nèi)仍然定位不到元素,就會(huì)拋出異常,中止腳本執(zhí)行。我們可以通過(guò)在腳本中設(shè)置等待的方式來(lái)避免由于網(wǎng)絡(luò)延遲或?yàn)g覽器卡頓導(dǎo)致的偶然失敗,常用的等待方式有三種:

一、強(qiáng)制等待

強(qiáng)制等待是利用python語(yǔ)言自帶的time庫(kù)中的sleep()方法:

from time import sleep
sleep(10)

sleep()顧明思義就是睡覺(jué)的意思,就是腳本一旦執(zhí)行到條語(yǔ)句sleep(10)就睡10s,再執(zhí)行后面的語(yǔ)句,他是一個(gè)強(qiáng)制等待的方式,使得整個(gè)腳本暫停。但是這種方式會(huì)導(dǎo)致這個(gè)腳本運(yùn)行時(shí)間過(guò)長(zhǎng),不到萬(wàn)不得已盡可能少用,特殊情況下,時(shí)間設(shè)置最好不超過(guò)1秒,一般0.5秒。

二、隱式等待

隱式等待相比強(qiáng)制等待更智能,顧明思義,在腳本中我們一般看不到等待語(yǔ)句,但是它會(huì)在每個(gè)頁(yè)面加載的時(shí)候自動(dòng)等待;隱式等待只需要聲明一次,一般在打開(kāi)瀏覽器后進(jìn)行聲明。聲明之后對(duì)整個(gè)drvier的生命周期都有效,后面不用重復(fù)聲明。

driver = webdriver.Chrome()
driver.implicitly_wait(10)

implicitly_wait()方法用來(lái)等待頁(yè)面加載完成(直觀的就是瀏覽器tab頁(yè)上的小圈圈轉(zhuǎn)完),implicitly_wait(10),超時(shí)時(shí)間10s,10秒內(nèi)一旦加載完成,就執(zhí)行下一條語(yǔ)句;如果10秒內(nèi)頁(yè)面都沒(méi)有加載完,就超時(shí)拋出異常。隱式等待在自動(dòng)化測(cè)試中的運(yùn)用,看代碼:

from selenium import webdriver
import unittest
 
class TestBase(unittest.TestCase):
  def setUp(self):
    self.driver=webdriver.Chrome() #驅(qū)動(dòng)瀏覽器
    self.driver.implicitly_wait(10) #設(shè)置隱式等待
    self.driver.maximize_window() #最大化瀏覽器
  def test(self): 
    print('這是一個(gè)測(cè)試用例')
  def tearDown(self):
    self.driver.quit()
if __name__=='__main__':
  unittest.main()

但是隱式等待依然存在一個(gè)問(wèn)題,那就是程序會(huì)一直等待整個(gè)頁(yè)面加載完成,也就是一般情況下你看到瀏覽器標(biāo)簽欄那個(gè)小圈不再轉(zhuǎn),才會(huì)執(zhí)行下一步,但有時(shí)候頁(yè)面想要的元素早就在加載完成了,但是因?yàn)閭€(gè)別js之類(lèi)的東西特別慢,我仍得等到頁(yè)面全部完成才能執(zhí)行下一步。所以,這里webdriver提供了一種更加智能的等待方式:顯示等待

三、顯示等待

顯示等待與隱式等待相對(duì),顯示等待必須在每個(gè)需要等待的元素前面進(jìn)行聲明。

#引入WebDriverWait
from selenium.webdriver.support.ui import WebDriverWait
#引入expected_conditions類(lèi),并重命名為EC
from selenium.webdriver.support expected_conditions as EC
#引入By類(lèi)
from selenium.webdriver.common.by import By
# Python小白學(xué)習(xí)交流群:711312441
#設(shè)置等待
wait = WebDriverWait(driver,10,0.5)
wait.until(EC.presence_of_element_located((By.ID,'KW')))

顯示等待需要用到兩個(gè)類(lèi):

WebDriverWait和expected_conditions兩個(gè)類(lèi)。

1、WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:瀏覽器驅(qū)動(dòng)

timeout:最長(zhǎng)超時(shí)時(shí)間,默認(rèn)以秒為單位

poll_frequency:檢測(cè)的間隔步長(zhǎng),默認(rèn)為0.5s

ignored_exceptions:超時(shí)后的拋出的異常信息,默認(rèn)拋出NoSuchElementExeception異常。

WebDriverWait()中的until()和until_not()方法:

  • until

method: 在等待期間,每隔一段時(shí)間(__init__中的poll_frequency)調(diào)用這個(gè)傳入的方法,直到返回值不是False
message: 如果超時(shí),拋出TimeoutException,將message傳入異常

  • until_not

與until相反,until是當(dāng)某元素出現(xiàn)或什么條件成立則繼續(xù)執(zhí)行,
until_not是當(dāng)某元素消失或什么條件不成立則繼續(xù)執(zhí)行,參數(shù)也相同。

2、expected_conditions類(lèi)

各種類(lèi),達(dá)到某種條件,返回True和False

常用條件:

條件 說(shuō)明
presence_of_element_located 判斷某個(gè)元素是否被加到了DOM樹(shù)里,并不代表該元素一定可見(jiàn)
visibility_of_element_located 判斷某個(gè)元素是否可見(jiàn),可見(jiàn)代表元素非隱藏,并且元素的寬和高都不等于0

關(guān)于顯示等待,也可以自己寫(xiě)條件:

#設(shè)置等待
wait = WebDriverWait(driver,10,0.5)
#使用匿名函數(shù)
wait.until(lambda diver:driver.find_element_by_id('kw'))

顯示等待是一種智能程度較高的等待方式,可以有效的增強(qiáng)腳本的健壯性,以下條件適用:

當(dāng)打開(kāi)一個(gè)新頁(yè)面,執(zhí)行第一個(gè)元素操作的時(shí)候
當(dāng)某一步操作會(huì)引發(fā)頁(yè)面的加載,并且加載的內(nèi)容包含了下一步需要操作的元素。一句話(huà),就是當(dāng)某個(gè)元素有加載過(guò)程的時(shí)候,就需要加上顯示等待。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-647314.html

到了這里,關(guān)于webdriver 的三種等待方式(強(qiáng)制等待、隱式等待、顯示等待)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • selenium的三種等待方式

    設(shè)置固定休眠時(shí)間,單位為秒。 由python的time包提供, 導(dǎo)入 time 包后就可以使用。 缺點(diǎn):不智能,使用太多的sleep會(huì)影響腳本運(yùn)行速度。 使用方法:time.sleep(delay) 使用舉例:打開(kāi)百度,強(qiáng)制等待5秒 (無(wú)條件等待,在一個(gè)時(shí)間段內(nèi)等待) 一次設(shè)置,全局生效。 不要當(dāng)作固定等待

    2023年04月13日
    瀏覽(14)
  • Appium/Selenium+Java的三種等待方式

    參考: java-selenium三種等待方式 Selenium+Java(六)Selenium 強(qiáng)制等待、顯式等待、隱實(shí)等待 強(qiáng)制等待是利用time模塊的sleep方法來(lái)實(shí)現(xiàn),最簡(jiǎn)單粗暴的等待方法。 缺點(diǎn):不能準(zhǔn)確把握需要等待的時(shí)間(有時(shí)候操作未完成,等待就結(jié)束了,導(dǎo)致報(bào)錯(cuò);有時(shí)候操作已經(jīng)完成了,但時(shí)間

    2024年02月05日
    瀏覽(20)
  • Web自動(dòng)化測(cè)試進(jìn)階:網(wǎng)頁(yè)中難點(diǎn)之等待機(jī)制 —— 強(qiáng)制等待,隱式等待

    為什么要添加等待 避免頁(yè)面未渲染完成后操作,導(dǎo)致的報(bào)錯(cuò) 經(jīng)常會(huì)遇到報(bào)錯(cuò):selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {\\\"method\\\":\\\"xpath\\\",\\\"selector\\\":\\\"http://*[text()=\\\'個(gè)人中心\\\']\\\"} 頁(yè)面還在加載時(shí),就在進(jìn)行查收元素,此時(shí)元素還沒(méi)顯示加載出來(lái),而報(bào)

    2024年02月05日
    瀏覽(76)
  • 軟件測(cè)試/測(cè)試開(kāi)發(fā)/全日制/測(cè)試管理丨selenium 經(jīng)典的三種等待方式

    軟件測(cè)試/測(cè)試開(kāi)發(fā)/全日制/測(cè)試管理丨selenium 經(jīng)典的三種等待方式

    在Selenium中,等待是一種重要的技術(shù),用于處理頁(yè)面加載和元素查找的時(shí)間差異。以下是Selenium中經(jīng)典的三種等待方式: 隱式等待: 描述: ?隱式等待是在查找所有元素時(shí)設(shè)置的全局等待時(shí)間。一旦設(shè)置,它將在整個(gè)測(cè)試執(zhí)行期間都起作用。 用法: ?設(shè)置隱式等待的代碼通常

    2024年01月17日
    瀏覽(26)
  • Selenium 3和JUnit 5中的顯示等待與隱式等待

    目錄 顯示等待(Explicit Wait) 什么是顯示等待? 如何實(shí)現(xiàn)顯示等待? 顯示等待條件 隱式等待(Implicit Wait) 什么是隱式等待? 如何實(shí)現(xiàn)隱式等待? 顯示等待和隱式等待的區(qū)別 強(qiáng)制等待 在Selenium自動(dòng)化測(cè)試中,等待是一個(gè)至關(guān)重要的概念。網(wǎng)頁(yè)加載速度、元素的可見(jiàn)性以及

    2024年02月09日
    瀏覽(18)
  • web自動(dòng)化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細(xì),selenium獲取斷言信息,顯示等待和隱式等待,xpath高級(jí)語(yǔ)法)-第二天

    web自動(dòng)化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細(xì),selenium獲取斷言信息,顯示等待和隱式等待,xpath高級(jí)語(yǔ)法)-第二天

    獲取到的斷言信息就是實(shí)際結(jié)果 預(yù)期結(jié)果使我們確定的,直接寫(xiě)在代碼中的 而實(shí)際結(jié)果是無(wú)法確定的,所以需要用一些方法去獲取 代碼示例 場(chǎng)景:當(dāng)我們加載頁(yè)面的時(shí)候,一些元素是需要時(shí)間的 就有可能發(fā)生,代碼執(zhí)行到了,而元素沒(méi)有被加載出來(lái) 此時(shí)就會(huì)出現(xiàn)找不到元

    2024年01月17日
    瀏覽(21)
  • Java父類(lèi)強(qiáng)制轉(zhuǎn)換為子類(lèi)的三種情況(推薦)

    Father f = new Father(); Son s = (Son)f;//出錯(cuò) ClassCastException Father f = new Son(); Son s = (Son)f;//可以 f只能用父類(lèi)的方法 s可以用子類(lèi)的所有方法 Son s = new Son(); Father f = (Father)s;//可以 f只能用父類(lèi)的方法

    2024年02月08日
    瀏覽(24)
  • 【selenium】三種等待方式

    time模塊中的sleep()方法,程序執(zhí)行到此代碼時(shí)強(qiáng)制等待一段時(shí)間。 time.sleep(time),傳入具體的等待時(shí)間time 可以控制等待的具體時(shí)間,一般在調(diào)試代碼時(shí)使用 無(wú)法準(zhǔn)確把握需要等待的時(shí)間 如果設(shè)置時(shí)間過(guò)短,操作還未完成,等待時(shí)間已到,會(huì)導(dǎo)致測(cè)試用例執(zhí)行報(bào)錯(cuò),影響測(cè)試

    2024年02月03日
    瀏覽(22)
  • Selenium:三種等待方式

    Selenium:三種等待方式

    目錄 一、顯示等待 二、隱式等待 三、強(qiáng)制等待 UI自動(dòng)化測(cè)試,大多都是通過(guò)定位頁(yè)面元素來(lái)模擬實(shí)際的生產(chǎn)場(chǎng)景操作。但在編寫(xiě)自動(dòng)化測(cè)試腳本中,經(jīng)常出現(xiàn)元素定位不到的情況,究其原因,無(wú)非兩種情況:1、有frame;2、沒(méi)有設(shè)置等待。 因?yàn)榇a運(yùn)行速度和瀏覽器加載渲

    2024年02月03日
    瀏覽(24)
  • selenium之三種等待方式

    1:強(qiáng)制等待 無(wú)條件等待,必須等待設(shè)置的時(shí)間后,再執(zhí)行 使用方法:導(dǎo)入time庫(kù),time.sleep(sec)? ? ? sec表示多少秒,sec設(shè)置多少秒頁(yè)面就會(huì)等待多少秒(死等),時(shí)間一到,繼續(xù)執(zhí)行下面的代碼。在調(diào)試的時(shí)候很有用,但這個(gè)方法很容易讓線(xiàn)程掛掉,使程序拋異常。 例:使

    2024年02月08日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包