最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動化中三種等待時間方式

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

Python自動化三種等待時間方式

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

在自動化測試中,其實就是通過代碼,來執(zhí)行測試的流程,也就意味著機器自己對頁面元素來進行操作,如果說因為頁面加載速度過慢,導致元素無法被第一時間找到,則報錯,停止本次自動化測試,通過添加等待的方法,讓代碼在運行時,會進行等待頁面加載的操作,以便于更好的進行元素查找。通過等待會讓自動化測試變得更加穩(wěn)定。

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

1.強制等待

強制等待是最簡單的一種等待方式,強制讓瀏覽器等待X秒,不管當前操作是否完成,是否可以進行下一步操作,都必須等X秒的時間。

使用方法:

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

缺點:

  • 不能準確把握需要等待的時間(有時操作還未完成,等待就結束了,導致報錯;有時操作已經(jīng)完成了,但等待時間還沒有到,浪費時間)
  • 如果在用例中大量使用,會浪費不必要的等待時間,影響測試用例的執(zhí)行效率。

優(yōu)點:

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

案例1:????

from selenium import webdriver
# 導包
import time  


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

2.隱式等待

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

使用方法:

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

缺點:

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

優(yōu)點:

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

案例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('明月')# 點擊百度一下按鈕driver.find_element_by_id('su').click()# 點擊結果中的某一個鏈接driver.find_element_by_xpath('//a[@aria-label="明月"]').click()
driver.quit()

3.顯式等待

顯性等待是對指定元素進行等待的一種等待方式。

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

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

缺點:

  • 使用相對比較復雜;
  • 和強制等待類似,每一行等待只執(zhí)行一次,如果要進行多個元素的等待,則需要多次寫入

優(yōu)點:

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

使用方法:

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

案例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('明月')
# 點擊百度一下按鈕
driver.find_element_by_id('su').click()
# 鏈接元素的xpath路徑
path = '//a[@aria-label="明月"]'
# 顯示等待:等待結果中要點擊的某個鏈接元素出現(xiàn)
WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath(path),message='元素沒有顯示')
# 點擊結果中的某一個鏈接
driver.find_element_by_xpath(path).click()
driver.quit()

總結

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

相關文章

  • 每天遷移MySQL歷史數(shù)據(jù)到歷史庫Python腳本

    每天遷移MySQL歷史數(shù)據(jù)到歷史庫Python腳本

    這篇文章主要為大家詳細介紹了Python實現(xiàn)每天遷移MySQL歷史數(shù)據(jù)到歷史庫的腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 如何使用uv構建Python包并本地安裝步驟詳解

    如何使用uv構建Python包并本地安裝步驟詳解

    uv是一個由Astral開發(fā)的超快Python包安裝工具和解析器,使用Rust編寫,旨在替代pip、pip-tools和virtualenv,提供更快的性能和更好的依賴管理,這篇文章主要介紹了如何使用uv構建Python包并本地安裝的相關資料,需要的朋友可以參考下
    2025-06-06
  • Python科學計算之Pandas詳解

    Python科學計算之Pandas詳解

    Pandas 是 python 的一個數(shù)據(jù)分析包,屬于PyData項目的一部分。下面這篇文章主要介紹了Python中科學計算之Pandas,需要的朋友可以參考借鑒,下面來一起學習學習。
    2017-01-01
  • Python腳本實現(xiàn)一鍵自動整理辦公文件

    Python腳本實現(xiàn)一鍵自動整理辦公文件

    這篇文章主要介紹了Python實現(xiàn)腳本一鍵自動整理辦公文件,文件下載文件夾就變得亂七八糟,整理的時候非常痛苦,巴不得有一個自動化的工具幫我歸類文檔。下面小編就給大家分享自動化整理文件的小技巧,需要的朋友可以參考一下文章內(nèi)容
    2022-02-02
  • 遷移現(xiàn)有的python項目到pyproject.toml

    遷移現(xiàn)有的python項目到pyproject.toml

    本文將詳細介紹將現(xiàn)有的?Python?項目遷移到?pyproject.toml,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • Python實現(xiàn)購物評論文本情感分析操作【基于中文文本挖掘庫snownlp】

    Python實現(xiàn)購物評論文本情感分析操作【基于中文文本挖掘庫snownlp】

    這篇文章主要介紹了Python實現(xiàn)購物評論文本情感分析操作,結合實例形式分析了Python使用中文文本挖掘庫snownlp操作中文文本進行感情分析的相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • 一篇文章帶你了解python迭代器和生成器

    一篇文章帶你了解python迭代器和生成器

    這篇文章主要介紹了Python中的迭代器和生成器,涉及到Python中很多重要的特性,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-08-08
  • python安裝win32com.client的實現(xiàn)示例

    python安裝win32com.client的實現(xiàn)示例

    win32com.client是Python操作Windows COM對象的模塊,用于與Office交互,本文主要介紹了python安裝win32com.client的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2025-06-06
  • python中常用的數(shù)據(jù)結構介紹

    python中常用的數(shù)據(jù)結構介紹

    這篇文章主要介紹了python中常用的數(shù)據(jù)結構介紹,幫助大家更好的理解和學習python的基礎知識,感興趣的朋友可以了解下
    2021-01-01
  • Python中使用Counter進行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法

    Python中使用Counter進行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法

    今天小編就為大家分享一篇Python中使用Counter進行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

普兰县| 九龙坡区| 台安县| 安丘市| 麻江县| 沅江市| 腾冲县| 青川县| 彭阳县| 万盛区| 玉溪市| 阿鲁科尔沁旗| 湛江市| 乐东| 孙吴县| 若羌县| 新化县| 军事| 延寿县| 阿拉尔市| 吴川市| 孟连| 乌鲁木齐县| 康平县| 武强县| 腾冲县| 茶陵县| 黄石市| 万年县| 彭泽县| 修文县| 象山县| 重庆市| 方城县| 弋阳县| 玛沁县| 平和县| 嘉黎县| 日喀则市| 本溪| 吴忠市|