亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python自動(dòng)化中三種等待時(shí)間方式

 更新時(shí)間:2024年02月08日 08:53:37   作者:明月與玄武  
這篇文章主要介紹了Python自動(dòng)化中三種等待時(shí)間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python自動(dòng)化三種等待時(shí)間方式

自動(dòng)化測試,是交由機(jī)器來執(zhí)行的一種測試手段,用于提升測試效率,意味著每一次的自動(dòng)化測試都需要有非常高的成功率,才可以達(dá)到提升效率的作用。

在自動(dòng)化測試中,其實(shí)就是通過代碼,來執(zhí)行測試的流程,也就意味著機(jī)器自己對(duì)頁面元素來進(jìn)行操作,如果說因?yàn)轫撁婕虞d速度過慢,導(dǎo)致元素?zé)o法被第一時(shí)間找到,則報(bào)錯(cuò),停止本次自動(dòng)化測試,通過添加等待的方法,讓代碼在運(yùn)行時(shí),會(huì)進(jìn)行等待頁面加載的操作,以便于更好的進(jìn)行元素查找。通過等待會(huì)讓自動(dòng)化測試變得更加穩(wěn)定。

我們平常用到的有三種等待方式:強(qiáng)制等待、隱式等待、顯式等待

1.強(qiáng)制等待

強(qiáng)制等待是最簡單的一種等待方式,強(qiáng)制讓瀏覽器等待X秒,不管當(dāng)前操作是否完成,是否可以進(jìn)行下一步操作,都必須等X秒的時(shí)間。

使用方法:

time.sleep(X)或者sleep(X)。在python中是基于time模塊的sleep方法來實(shí)現(xiàn)。

缺點(diǎn):

  • 不能準(zhǔn)確把握需要等待的時(shí)間(有時(shí)操作還未完成,等待就結(jié)束了,導(dǎo)致報(bào)錯(cuò);有時(shí)操作已經(jīng)完成了,但等待時(shí)間還沒有到,浪費(fèi)時(shí)間)
  • 如果在用例中大量使用,會(huì)浪費(fèi)不必要的等待時(shí)間,影響測試用例的執(zhí)行效率。

優(yōu)點(diǎn):

  • 使用簡單
  • 可以在調(diào)試時(shí)使用。

案例1:????

from selenium import webdriver
# 導(dǎo)包
import time  


driver = webdriver.Chrome()
# 訪問百度
driver.get('https://www.baidu.com')
# 搜索框輸入 明月
driver.find_element_by_id('kw').send_keys('明月')
# 點(diǎn)擊百度一下按鈕
driver.find_element_by_id('su').click()
# 強(qiáng)制等待
time.sleep(3) 
# 點(diǎn)擊結(jié)果中的某一個(gè)鏈接
driver.find_element_by_xpath('//a[@aria-label="明月,百度百科"]').click()
driver.quit()

2.隱式等待

隱式等待是設(shè)置了一個(gè)最長等待時(shí)間,如果在規(guī)定時(shí)間內(nèi)網(wǎng)頁加載完成,則執(zhí)行下一步,否則一直等到時(shí)間結(jié)束,然后再執(zhí)行下一步操作。

使用方法:

driver.implicitly_wait(X)。在X時(shí)間內(nèi),頁面加載完成,進(jìn)行下一步操作。

缺點(diǎn):

  • 使用隱式等待,程序會(huì)一直等待整個(gè)頁面加載完成,才會(huì)執(zhí)行下一步操作;但有時(shí)候頁面想要的元素早已經(jīng)加載完成了,但是因?yàn)榫W(wǎng)頁上個(gè)別元素還沒有加載完成,仍要等到頁面全部完成才能執(zhí)行下一步,使用也不是很靈活。
  • 在等待時(shí)間內(nèi)頁面沒有加載完成,時(shí)間一到也會(huì)進(jìn)入下一步操作;這種情況可能出現(xiàn)要定位的元素沒有出現(xiàn),從而報(bào)元素?zé)o法找到的錯(cuò)誤。

優(yōu)點(diǎn):

  • 隱性等待對(duì)整個(gè)driver的周期都起作用
  • 每一次操作都會(huì)調(diào)用隱式等待,所以只要設(shè)置一次即可。

案例2:

from selenium import webdriver driver = webdriver.Chrome()# 隱式等待
 
 
driver.implicitly_wait(10)
# 訪問百度
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('明月')# 點(diǎn)擊百度一下按鈕driver.find_element_by_id('su').click()# 點(diǎn)擊結(jié)果中的某一個(gè)鏈接driver.find_element_by_xpath('//a[@aria-label="明月"]').click()
driver.quit()

3.顯式等待

顯性等待是對(duì)指定元素進(jìn)行等待的一種等待方式。

通過設(shè)置最大等待時(shí)間,檢查頻率對(duì)頁面的元素來進(jìn)行等待,一旦找到元素,則停止等待,進(jìn)入后續(xù)步驟。

它主要的意思就是:程序每隔X秒看一眼,如果條件成立了,則執(zhí)行下一步,否則繼續(xù)等待,直到超過設(shè)置的最長時(shí)間,然后拋出TimeoutException異常。

缺點(diǎn):

  • 使用相對(duì)比較復(fù)雜;
  • 和強(qiáng)制等待類似,每一行等待只執(zhí)行一次,如果要進(jìn)行多個(gè)元素的等待,則需要多次寫入

優(yōu)點(diǎn):

  •  等待判斷準(zhǔn)確,不會(huì)浪費(fèi)多余的等待時(shí)間
  • 在用例中使用,可以提高執(zhí)行效率。

使用方法:

from selenium.webdriver.support.wait import WebDriverWait
 
 
WebDriverWait(driver, timeout, poll_frequency=0.5,ignored_exceptions=None).until(method, message='')
 
# driver:瀏覽器驅(qū)動(dòng)
 
# timeout:最大等待時(shí)間# poll_frequency:檢測的間隔時(shí)間,默認(rèn)0.5
 
# ignored_exceptions:超時(shí)后的異常信息,默認(rèn)拋出NoSuchElementException 
 
# until()方法:直到條件成立返回為真,等待結(jié)束。如果超時(shí),拋出TimeoutException,將message傳入異常
 
# method:在等待期間,每隔一段時(shí)間調(diào)用這個(gè)傳入的方法,直到返回值不是False,一般使用lambda匿名函數(shù)
 
# message:提示信息,出現(xiàn)異常時(shí)會(huì)將這個(gè)信息輸出在控制臺(tái)

案例3:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait


driver=webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 搜索框輸入明月
driver.find_element_by_id('kw').send_keys('明月')
# 點(diǎn)擊百度一下按鈕
driver.find_element_by_id('su').click()
# 鏈接元素的xpath路徑
path = '//a[@aria-label="明月"]'
# 顯示等待:等待結(jié)果中要點(diǎn)擊的某個(gè)鏈接元素出現(xiàn)
WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath(path),message='元素沒有顯示')
# 點(diǎn)擊結(jié)果中的某一個(gè)鏈接
driver.find_element_by_xpath(path).click()
driver.quit()

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pytest+Allure使用示例教程

    Pytest+Allure使用示例教程

    Allure是開源的免費(fèi)的自動(dòng)化測試報(bào)告,支持Java,Python,我們來看看如何使用Python pytest與Allure整合,輸出漂亮的測試報(bào)告,這篇文章主要介紹了Pytest+Allure使用教程,需要的朋友可以參考下
    2023-12-12
  • python 字符串格式化的示例

    python 字符串格式化的示例

    這篇文章主要介紹了python 字符串格式化的示例,幫助大家更好的理解和使用python處理字符串,感興趣的朋友可以了解下
    2020-09-09
  • python數(shù)據(jù)分析工具之 matplotlib詳解

    python數(shù)據(jù)分析工具之 matplotlib詳解

    對(duì)于 Python 來說,matplotlib 是最著名的繪圖庫,它主要用于二維繪圖,當(dāng)然也可以進(jìn)行簡單的三維繪圖。這篇文章主要介紹了python數(shù)據(jù)分析工具之 matplotlib的相關(guān)知識(shí),需要的朋友可以參考下
    2020-04-04
  • 如何將Pycharm中Terminal使用Powershell作為終端

    如何將Pycharm中Terminal使用Powershell作為終端

    這篇文章主要介紹了如何將Pycharm中Terminal使用Powershell作為終端問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python獲取B站粉絲數(shù)的示例代碼

    Python獲取B站粉絲數(shù)的示例代碼

    這篇文章主要介紹了Python獲取B站粉絲數(shù)的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Python Http發(fā)送請(qǐng)求淺析

    Python Http發(fā)送請(qǐng)求淺析

    這篇文章主要介紹了Python Http發(fā)送請(qǐng)求淺析,文章主要通過從requests、aiohttp、httpx三個(gè)接口請(qǐng)求展開詳情,需要的朋友可以參考一下文章具體詳細(xì)內(nèi)容
    2022-06-06
  • opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn)

    opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn)

    這篇文章主要介紹了opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python實(shí)現(xiàn)E-Mail收集插件實(shí)例教程

    Python實(shí)現(xiàn)E-Mail收集插件實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)E-Mail收集插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2019-02-02
  • python和pyqt-tools安裝位置圖文詳解

    python和pyqt-tools安裝位置圖文詳解

    查詢Python安裝位置可通過命令行輸入import sys和sys.path實(shí)現(xiàn),而Python-tools的安裝位置則可在Python文件夾內(nèi)找到,本文介紹了如何查詢Python及其工具包PyQt-tools的安裝位置,便于用戶進(jìn)行相關(guān)設(shè)置或調(diào)試,更多關(guān)于Python安裝和配置的內(nèi)容,可查閱腳本之家的相關(guān)文章
    2024-09-09
  • pytorch numpy list類型之間的相互轉(zhuǎn)換實(shí)例

    pytorch numpy list類型之間的相互轉(zhuǎn)換實(shí)例

    今天小編就為大家分享一篇pytorch numpy list類型之間的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評(píng)論