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

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

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

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

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

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

2、隱式等待 ( implicitly_wait)

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

簡(jiǎn)介:隱式等待是全局的是針對(duì)所有元素,設(shè)置等待時(shí)間如10秒,如果10秒內(nèi)出現(xiàn),則繼續(xù)向下,否則拋異常??梢岳斫鉃樵?0秒以?xún)?nèi),不停刷新看元素是否加載出來(lái)。

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

3、顯示等待 ( expected_conditions)

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

1. 判斷element是否可見(jiàn):visibility_of_element_located(locator) (可見(jiàn)代表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()使用(等待元素可見(jiàn))
# 5表示 最長(zhǎng)超時(shí)時(shí)間,默認(rèn)以秒為單位; 1表示檢測(cè)的間隔步長(zhǎng),在等待期間,每隔一定時(shí)間(默認(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()使用(等待元素不可見(jiàn))
WebDriverWait(driver, 5, 1).until_not(EC.visibility_of_element_located(By.ID,'user'))
?
# 在類(lèi)中封裝為一個(gè)函數(shù)
? ? def wait_eleLocated(self, loc, timeout=30, poll_frequency=0.5, model=None):
? ? ? ? """
? ? ? ? :param loc:元素定位表達(dá);元組類(lèi)型,表達(dá)方式(元素定位類(lèi)型,元素定位方法),示例:(By.ID, "kw")
? ? ? ? :param timeout:超時(shí)時(shí)間
? ? ? ? :param poll_frequency:輪詢(xún)頻率
? ? ? ? :param model:等待失敗時(shí),截圖操作,圖片文件中需要表達(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}"時(shí)長(zhǎng):{end - start}')
? ? ? ? except TimeoutException:
? ? ? ? ? ? self.logger.exception(f'等待"{model}"元素失敗,定位方式:{loc}')
? ? ? ? ? ? # 截圖
? ? ? ? ? ? self.save_webImgs(f"等待元素[{model}]出現(xiàn)異常")
? ? ? ? ? ? raise

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

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. 判斷某個(gè)element中是否可見(jiàn)并且可點(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. 判斷某個(gè)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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Python2獲取中文文件名的編碼問(wèn)題

    淺談Python2獲取中文文件名的編碼問(wèn)題

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

    查看Python依賴(lài)包及其版本號(hào)信息的方法

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python的加密模塊md5、sha、crypt使用實(shí)例

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

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

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

最新評(píng)論

临西县| 焦作市| 崇义县| 罗定市| 潮州市| 大关县| 上蔡县| 射洪县| 定安县| 永福县| 安塞县| 宣汉县| 丽水市| 辽宁省| 玉屏| 南溪县| 青州市| 盘锦市| 图们市| 合肥市| 竹山县| 满城县| 航空| 揭西县| 达尔| 青岛市| 邓州市| 阿巴嘎旗| 建阳市| 阿瓦提县| 博爱县| 修文县| 永济市| 青冈县| 金门县| 郴州市| 开封县| 蓬安县| 湖南省| 诸暨市| 徐水县|