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

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

 更新時間:2022年02月15日 08:35:15   作者:小碼哥說測試  
這篇文章主要介紹了Selenium?三種等待方式(強(qiáng)制等待、隱式等待、顯示等待),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

1、強(qiáng)制等待(sleep)

from time import sleep
sleep(3)  # 強(qiáng)制等待3秒

缺點(diǎn):由于Web加載的速度取決于測試的硬件、網(wǎng)速、服務(wù)器的響應(yīng)時間等因素。如果等待時間太長,容易造成時間浪費(fèi),如果等待時間太短又可能會造成在web還沒有加載完所需要定位的element,而出現(xiàn)報錯。
由于等待時間無法確定,使用太多的sleep會影響運(yùn)行速度,大大地降低效率,所以建議測試中盡量少使用強(qiáng)制等待。

2、隱式等待 ( implicitly_wait)

# 隱式等待10s
driver.implicitly_wait(10) 

簡介:隱式等待是全局的是針對所有元素,設(shè)置等待時間如10秒,如果10秒內(nèi)出現(xiàn),則繼續(xù)向下,否則拋異常。可以理解為在10秒以內(nèi),不停刷新看元素是否加載出來。

使用場景:隱式等待只需要聲明一次,一般在打開瀏覽器后進(jìn)行聲明。聲明之后對整個drvier的生命周期都有效,后面不用重復(fù)聲明。隱式等待存在一個問題,那就是程序會一直等待整個頁面加載完成,也就是一般情況下你看到瀏覽器標(biāo)簽欄那個小圈不再轉(zhuǎn),才會執(zhí)行下一步,但有時候頁面想要的元素早就在加載完成了,但是因為個別js之類的東西特別慢,仍得等到頁面全部完成才能執(zhí)行下一步。

3、顯示等待 ( expected_conditions)

簡介:顯示等待是單獨(dú)針對某個元素,設(shè)置一個等待時間如5秒,每隔0.5秒檢查一次是否出現(xiàn),如果在5秒之前任何時候出現(xiàn),則繼續(xù)向下,一般需要配合該類的 until() 和 until_not() 方法一起用,直到超過設(shè)置的最長時間,然后拋出超時錯誤 TimeoutException,以下介紹幾個最常用的方法:

1. 判斷element是否可見:visibility_of_element_located(locator) (可見代表element非隱藏,并且element寬和高都不等于 0)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
# 示例
target = EC.visibility_of_element_located(By.ID,'user')
?
# 配合until()使用(等待元素可見)
# 5表示 最長超時時間,默認(rèn)以秒為單位; 1表示檢測的間隔步長,在等待期間,每隔一定時間(默認(rèn)0.5秒),調(diào)用until或until_not里的方法,直到它返回True或False.
WebDriverWait(driver, 5, 1).until(EC.visibility_of_element_located(By.ID,'user'))
# 配合until_not()使用(等待元素不可見)
WebDriverWait(driver, 5, 1).until_not(EC.visibility_of_element_located(By.ID,'user'))
?
# 在類中封裝為一個函數(shù)
? ? def wait_eleLocated(self, loc, timeout=30, poll_frequency=0.5, model=None):
? ? ? ? """
? ? ? ? :param loc:元素定位表達(dá);元組類型,表達(dá)方式(元素定位類型,元素定位方法),示例:(By.ID, "kw")
? ? ? ? :param timeout:超時時間
? ? ? ? :param poll_frequency:輪詢頻率
? ? ? ? :param model:等待失敗時,截圖操作,圖片文件中需要表達(dá)的功能標(biāo)注
? ? ? ? :return:None
? ? ? ? """
? ? ? ? self.logger.info(f'等待"{model}"元素,定位方式:{loc}')
? ? ? ? try:
? ? ? ? ? ? start = datetime.now()
? ? ? ? ? ? WebDriverWait(self.driver, timeout, poll_frequency).until(EC.visibility_of_element_located(loc))
? ? ? ? ? ? end = datetime.now()
? ? ? ? ? ? self.logger.info(f'等待"{model}"時長:{end - start}')
? ? ? ? except TimeoutException:
? ? ? ? ? ? self.logger.exception(f'等待"{model}"元素失敗,定位方式:{loc}')
? ? ? ? ? ? # 截圖
? ? ? ? ? ? self.save_webImgs(f"等待元素[{model}]出現(xiàn)異常")
? ? ? ? ? ? raise

2. 判斷某個element是否被加載到dom樹:presence_of_element_located(locator) (并不代表該element一定可見)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
?
target = EC.presence_of_element_located(By.ID,'user')

3. 判斷某個element中是否可見并且可點(diǎn)擊:element_to_be_clickable(locator)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
?
target = EC.element_to_be_clickable(By.ID,'user')

4. 判斷某個element是否被選中:element_to_be_selected(element) (一般用在下拉列表)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
?
element = driver.find_element_by_class_name('selector')
EC.element_to_be_selected(element)

到此這篇關(guān)于Selenium 三種等待方式(強(qiáng)制等待、隱式等待、顯示等待)的文章就介紹到這了,更多相關(guān)Selenium 等待方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Python2獲取中文文件名的編碼問題

    淺談Python2獲取中文文件名的編碼問題

    下面小編就為大家分享一篇淺談Python2獲取中文文件名的編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 查看Python依賴包及其版本號信息的方法

    查看Python依賴包及其版本號信息的方法

    今天小編就為大家分享一篇查看Python依賴包及其版本號信息的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • PyQt+socket實現(xiàn)遠(yuǎn)程操作服務(wù)器的方法示例

    PyQt+socket實現(xiàn)遠(yuǎn)程操作服務(wù)器的方法示例

    這篇文章主要介紹了PyQt+socket實現(xiàn)遠(yuǎn)程操作服務(wù)器的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python中sample函數(shù)的介紹與使用

    python中sample函數(shù)的介紹與使用

    sample()函數(shù)常用來隨機(jī)獲取dataFrame中數(shù)據(jù),可以用于快速查看,下面這篇文章主要給大家介紹了關(guān)于python中sample函數(shù)的介紹與使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 使用Python進(jìn)行圖像批處理的方法示例

    使用Python進(jìn)行圖像批處理的方法示例

    在Python中進(jìn)行圖像批處理可以使用多種庫,如 Pillow、OpenCV 和 imageio,這些庫可以用來執(zhí)行各種圖像處理任務(wù),如調(diào)整大小、裁剪、旋轉(zhuǎn)、濾鏡應(yīng)用等,以下是使用這些庫進(jìn)行圖像批處理的示例,需要的朋友可以參考下
    2024-09-09
  • python網(wǎng)絡(luò)爬蟲基于selenium爬取斗魚直播信息

    python網(wǎng)絡(luò)爬蟲基于selenium爬取斗魚直播信息

    目前是直播行業(yè)的一個爆發(fā)期,由于國家對直播行業(yè)進(jìn)行整頓和規(guī)范,現(xiàn)在整個直播行業(yè)也在穩(wěn)固發(fā)展。隨著互聯(lián)網(wǎng)和網(wǎng)絡(luò)直播市場的快速發(fā)展,相信未來還有廣闊的發(fā)展前景。今天用selenium爬取一下斗魚直播信息將代碼分享給大家
    2022-03-03
  • python使用參數(shù)對嵌套字典進(jìn)行取值的方法

    python使用參數(shù)對嵌套字典進(jìn)行取值的方法

    這篇文章主要介紹了python使用參數(shù)對嵌套字典進(jìn)行取值,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Python接口自動化淺析logging日志原理及模塊操作流程

    Python接口自動化淺析logging日志原理及模塊操作流程

    這篇文章主要為大家介紹了Python接口自動化系列文章淺析logging日志原理及模塊操作流程,文中詳細(xì)說明了為什么需要日志?日志是什么?以及日志用途等基本的原理
    2021-08-08
  • Python的加密模塊md5、sha、crypt使用實例

    Python的加密模塊md5、sha、crypt使用實例

    這篇文章主要介紹了Python的加密模塊md5、sha、crypt使用實例,本文給出了MD5和crypt模塊的代碼實例,需要的朋友可以參考下
    2014-09-09
  • Python?list?append方法之給列表追加元素

    Python?list?append方法之給列表追加元素

    這篇文章主要介紹了Python?list?append方法如何給列表追加元素,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

台东市| 驻马店市| 临漳县| 鲁甸县| 涪陵区| 冷水江市| 临江市| 噶尔县| 达孜县| 临沂市| 屏边| 唐海县| 宜城市| 乌鲁木齐市| 都江堰市| 陈巴尔虎旗| 贵溪市| 贞丰县| 兴宁市| 秦皇岛市| 辉县市| 喀喇| 洪雅县| 石嘴山市| 十堰市| 贵阳市| 库尔勒市| 安化县| 灵川县| 水城县| 乡城县| 凭祥市| 和硕县| 新和县| 汶川县| 景洪市| 宽甸| 宜君县| 贺兰县| 边坝县| 江津市|