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

【selenium】三種等待方式

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

一、強(qiáng)制等待? time.sleep()

time模塊中的sleep()方法,程序執(zhí)行到此代碼時(shí)強(qiáng)制等待一段時(shí)間。

1、寫法

time.sleep(time),傳入具體的等待時(shí)間time

# 導(dǎo)入time模塊
import time
from selenium import webdriver
 
# 創(chuàng)建webdrive的實(shí)例對象
driver = webdriver.Chrome()
 
# 通過get()方法打開網(wǎng)址
driver.get("https://www.baidu.com/")
 
# 等待10s后代碼再繼續(xù)往下執(zhí)行
time.sleep(10)

2、優(yōu)點(diǎn)

可以控制等待的具體時(shí)間,一般在調(diào)試代碼時(shí)使用

3、缺點(diǎn)

無法準(zhǔn)確把握需要等待的時(shí)間

如果設(shè)置時(shí)間過短,操作還未完成,等待時(shí)間已到,會導(dǎo)致測試用例執(zhí)行報(bào)錯(cuò),影響測試用例的繼續(xù)執(zhí)行。

如果設(shè)置時(shí)間過長,操作執(zhí)行完畢,等待時(shí)間未到,會浪費(fèi)不必要的等待時(shí)間,影響測試用例的執(zhí)行效率。

二、隱式等待??implicitly_wait()

webdriver對象的implicitly_wait()方法,在設(shè)置時(shí)間內(nèi)周期性的尋找元素。

1、寫法

webdriver對象.implicitly_wait(time),傳入等待的最大時(shí)間time

from selenium import webdriver
 
# 創(chuàng)建webdrive的實(shí)例對象
driver = webdriver.Chrome()
 
# 通過get()方法打開網(wǎng)址
driver.get("https://www.baidu.com/")

# 設(shè)置隱式等待最大時(shí)間為10s
driver.implicitly_wait(10)

# 定位元素時(shí),隱式等待全局作用
driver.find_element("id", "kw")

2、優(yōu)點(diǎn)

在設(shè)置時(shí)間內(nèi)周期性(默認(rèn)0.5s)的尋找元素

如果元素還未找到,不會立即拋出異常,只有在超過設(shè)置的最大等待時(shí)間時(shí)才會報(bào)錯(cuò)

如果元素提前找到,就繼續(xù)執(zhí)行后面的代碼,不會浪費(fèi)過多的等待時(shí)間

在整個(gè)driver周期中都起作用,設(shè)置一次全局有效,所有查找元素的操作都會進(jìn)行等待

可以隨時(shí)更改隱式等待的時(shí)間,對更改位置之后的查找元素操作起作用

3、缺點(diǎn)

隱式等待只能解決元素查找問題,不能解決元素交互問題。

頁面加載完成,定位的元素已經(jīng)找到,找到了元素就結(jié)束等待繼續(xù)執(zhí)行之后的代碼。但是可能因?yàn)閖s設(shè)置等情況,元素非可交互狀態(tài),無法通過交互實(shí)現(xiàn)想要的結(jié)果,從而導(dǎo)致報(bào)錯(cuò)。

注:隱式等待只對查找元素起作用。查找元素的操作需要等到頁面加載完成,才會執(zhí)行。因此隱式等待是在頁面完全加載,開始查找元素時(shí)計(jì)時(shí)。

三、顯示等待??WebDriverWait

selenium中的WebDriverWait類,可以針對某一個(gè)元素進(jìn)行等待設(shè)置

使用顯示等待時(shí)一般 WebDriverWait 和 expected_conditions 兩個(gè)類結(jié)合使用

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

1、寫法

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

  • driver:webdriver實(shí)例對象
  • timeout:最長超時(shí)時(shí)間,以秒為單位
  • poll_frequency:檢測的間隔步長,默認(rèn)為0.5s。(可不填)
  • ignored_exceptions:超時(shí)后拋出的異常信息,默認(rèn)拋出NoSuchElementExeception異常。(可不填)

until/until_not(self, method, message: str = "")

until():條件成立返回True,等待結(jié)束,如果超時(shí),拋出TimeoutException異常。

until_not():條件不成立返回True,等待結(jié)束,如果超時(shí),拋出TimeoutException異常。

  • method:每次輪詢時(shí)執(zhí)行的等待條件。
  • message:輪詢超時(shí)后打印的信息。(可不填)

等待條件 method 由 expected_conditions?類提供,一般導(dǎo)入模塊為 EC,并將該模塊提供的方法傳入

from selenium import webdriver
# 導(dǎo)入WebDriverWait 和 expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 創(chuàng)建webdrive的實(shí)例對象
driver = webdriver.Chrome()

# 通過get()方法打開網(wǎng)址
driver.get("https://www.baidu.com/")

# 顯示等待元素為可點(diǎn)擊狀態(tài)
WebDriverWait(driver, 5).until(EC.element_to_be_clickable(("id", "kw")))

# 操作元素
driver.find_element("id", "kw").click()

2、expected_conditions模塊

頁面標(biāo)題內(nèi)容

方法 描述
title_is(title: string) 精準(zhǔn)匹配頁面標(biāo)題 title
title_contains(title: string) 模糊匹配頁面標(biāo)題 title

元素是否在DOM中

注:元素在 DOM 出現(xiàn)不代表該元素一定可見

方法 描述
presence_of_element_located(locator) locator 指定的元素出現(xiàn)在 DOM 中
presence_of_all_elements_located(locator) locator 指定的所有元素出現(xiàn)在 DOM 中

元素是否可見

方法 描述
visibility_of_element_located(locator) locator 指定的元素可見
visibility_of(element) 元素 element 可見
visibility_of_any_elements_located(locator) locator 指定的元素中至少一個(gè)可見
invisibility_of_element_located(locator) locator 指定的元素不可見
invisibility_of_element(element) 元素 element 不可見

元素是否被選中

方法 描述
element_to_be_selected(element) 元素 element 被選中
element_located_to_be_selected(locator) locator 指定的元素被選中
element_selection_state_to_be(element, is_selected) 元素 element 的選中狀態(tài)符合 is_selected,True 表示被選中,F(xiàn)alse 表示未選中。
element_located_selection_state_to_be(locator, is_selected) locator 指定元素的選中狀態(tài)符合 is_selected,True 表示被選中,F(xiàn)alse 表示未選中。

元素是否可點(diǎn)擊

方法 描述
element_to_be_clickable(mark) 元素可見并可點(diǎn)擊,mark 可以是 locator,也可以是 element

元素是否存在

方法 描述
staleness_of(element) 元素 element 存在,在等待時(shí)間內(nèi)被移除

元素文本內(nèi)容

方法 描述
text_to_be_present_in_element(locator, text_) locator 指定的元素上包含文本 text
text_to_be_present_in_element_value(locator, text_) locator 指定的元素的 value 屬性值包含文本 text
text_to_be_present_in_element_attribute(locator, attribute_, text_) locator 指定的元素的 attribute 指定的屬性值中包含文本 text

切換frame

方法 描述
frame_to_be_available_and_switch_to_it(locator) 切換到 locator 指定的 frame

頁面窗口狀態(tài)

方法 描述
number_of_windows_to_be(num_windows) 當(dāng)前窗口數(shù)為 num_windows
new_window_is_opened(current_handles) 有新窗口被打開,current_handles 為調(diào)用該方法前的窗口句柄列表
alert_is_present() 出現(xiàn) alert 窗口

復(fù)合條件

將等待條件通過逗號或者邏輯操作符連接起來進(jìn)行判定。邏輯操作包括:與、或、非。

方法 描述
all_of(*expected_conditions) expected_conditions 列表中條件都符合
any_of(*expected_conditions) expected_conditions 列表中條件符合其一
none_of(*expected_conditions) expected_conditions 列表中條件都不符合

2、優(yōu)點(diǎn)

可以精確定位元素的狀態(tài),每個(gè)元素分別設(shè)置,不會浪費(fèi)過多的等待時(shí)間,提高測試效率

3、缺點(diǎn)

使用相對比較復(fù)雜。每個(gè)元素要單獨(dú)設(shè)置,無法全局使用。

注:隱式等待和顯示等待可以混合使用,當(dāng)作用于同一個(gè)元素時(shí),等待時(shí)間取決于時(shí)間更長的等待文章來源地址http://www.zghlxwxcb.cn/news/detail-771188.html

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

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

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

相關(guān)文章

  • 五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待

    五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待

    名詞解釋:強(qiáng)制線程休眠一定時(shí)間,適合腳本調(diào)試時(shí)使用。 常用方法: Thread.sleep(long millis); 優(yōu)點(diǎn):適合腳本調(diào)試時(shí)使用; 缺點(diǎn):不能準(zhǔn)確把握需要等待的時(shí)間,如果用例中大量使用,會浪費(fèi)不必要的等待時(shí)間,影響用例的執(zhí)行效率; 操作未完成,等待結(jié)束,導(dǎo)致系統(tǒng)報(bào)錯(cuò)

    2023年04月08日
    瀏覽(12)
  • selenium之三種等待方式

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

    2024年02月08日
    瀏覽(20)
  • selenium的三種等待方式

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

    2023年04月13日
    瀏覽(14)
  • selenium中的三種等待方式以及顯示等待和隱式等待區(qū)別

    selenium中一般分為三種等待方式:顯示等待、隱式等待、sleep強(qiáng)制等待 1、顯示等待(有條件) 程序提前指定等待條件和等待時(shí)間,在查找元素時(shí),判斷規(guī)定時(shí)間內(nèi)是否滿足條件,滿足則繼續(xù)執(zhí)行,不滿足或超出時(shí)間則拋出異常 2、隱式等待(無條件) 程序提前指定等待時(shí)間,在查

    2024年02月12日
    瀏覽(22)
  • Appium/Selenium+Java的三種等待方式

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

    2024年02月05日
    瀏覽(21)
  • 爬蟲學(xué)習(xí)(13):selenium自動化測試(二):等待頁面加載完成

    在上一篇已經(jīng)講過了大部分的知識點(diǎn)和實(shí)戰(zhàn),本篇主要內(nèi)容為知識點(diǎn)回顧和多個(gè)元素的定位知識點(diǎn)補(bǔ)充,以及補(bǔ)充頁面加載知識點(diǎn)和案例。 在一個(gè)頁面中有很多不同的策略可以定位一個(gè)元素。在你的項(xiàng)目中,你可以選擇最合適的方法去查找元素。Selenium提供了下列的方法給你

    2024年02月06日
    瀏覽(36)
  • python自動化測試selenium核心技術(shù)三種等待方式

    python自動化測試selenium核心技術(shù)三種等待方式

    UI自動化測試過程中,可能會出現(xiàn)因測試環(huán)境不穩(wěn)定、網(wǎng)絡(luò)慢等情況,如果不做任何處理的話,會出現(xiàn)無法定位到特定元素而報(bào)錯(cuò),導(dǎo)致自動化測試無法順利執(zhí)行。 selenium官網(wǎng)手冊:Waits | Selenium slenium自動化測試中,主要涉及三種等待方式:???? 缺點(diǎn):即使網(wǎng)絡(luò)條件較好時(shí)

    2024年04月11日
    瀏覽(28)
  • selenium-webdriver+nodejs等待頁面加載完畢后執(zhí)行后續(xù)動作

    最近在用selenium-webdriver+nodejs為自己的項(xiàng)目寫一個(gè)自動登錄、自動跳轉(zhuǎn)頁面的自動化工具,減少開發(fā)環(huán)境中切換不同賬號時(shí),頻繁操作的目的。(特殊環(huán)境,瀏覽器不允許打開密碼記錄功能) 網(wǎng)絡(luò)上大部分是python或者java的項(xiàng)目,作為前端,當(dāng)然要選擇nodejs。 例如:登錄后,點(diǎn)

    2024年02月06日
    瀏覽(22)
  • selenium中三種等待方式:sleep,implicitly_wait,WebDriverWait

    selenium中三種等待方式:sleep,implicitly_wait,WebDriverWait

    強(qiáng)制等待, sleep,設(shè)置等待多長時(shí)間,就要等待多長時(shí)間。等待完成后,才會繼續(xù)下一步: 相比較于sleep的強(qiáng)制等待,selenium中還有種等待,可以稱之為智能等待:implicitly_wait。所謂智能等待,就是在我設(shè)置的等待時(shí)間范圍內(nèi),只要滿足了我的條件,就會立即結(jié)束等待,繼續(xù)

    2024年02月16日
    瀏覽(20)
  • webdriver 的三種等待方式(強(qiáng)制等待、隱式等待、顯示等待)

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

    2024年02月13日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包