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

selenium WebDriverWait類等待機(jī)制的實(shí)現(xiàn)

 更新時(shí)間:2020年03月18日 11:11:39   作者:清寶貝,加油  
這篇文章主要介紹了selenium WebDriverWait類等待機(jī)制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在自動(dòng)化測(cè)試腳本的運(yùn)行過(guò)程中,可以通過(guò)設(shè)置等待的方式來(lái)避免由于網(wǎng)絡(luò)延遲或?yàn)g覽器卡頓導(dǎo)致的偶然失敗,常用的等待方式有三種:

一、固定等待(time)

  固定待是利用python語(yǔ)言自帶的time庫(kù)中的sleep()方法,固定等待幾秒。這種方式會(huì)導(dǎo)致這個(gè)腳本運(yùn)行時(shí)間過(guò)長(zhǎng),不到萬(wàn)不得已盡可能少用。(注:腳本調(diào)試過(guò)程時(shí),還是可以使用的,方便快捷)

from selenium import webdriver
import time

#驅(qū)動(dòng)瀏覽器
driver = webdriver.Chrome()

#設(shè)置窗口最大化
driver.maximize_window()
driver.get('https://www.baidu.com/')

#設(shè)置固定等待
time.sleep(2)

driver.quit()

二、隱式等待(implicitly_wait())

 webdriver類提供了implicitly_wait()方法來(lái)配置超時(shí)時(shí)間。隱式等待表示在自動(dòng)化實(shí)施過(guò)程中,為查找頁(yè)面元素或者執(zhí)行命令設(shè)置一個(gè)最長(zhǎng)等待時(shí)間。如果在規(guī)定時(shí)間內(nèi)頁(yè)面元素被找到或者命令被執(zhí)行完成,則執(zhí)行下一步,否則繼續(xù)等待直到設(shè)置的最長(zhǎng)等待時(shí)間截止

from selenium import webdriver

#驅(qū)動(dòng)瀏覽器
driver = webdriver.Chrome()

#設(shè)置隱式等待
driver.implicitly_wait(30)

#設(shè)置窗口最大化
driver.maximize_window()
driver.get('https://www.baidu.com/')

   注:隱式等待的好處是不用像固定等待方法一樣死等時(shí)間N秒,可以在一定程度上提升測(cè)試用例的執(zhí)行效率。不過(guò)這種方法也存在一定的弊端,那就是程序會(huì)一直等待整個(gè)頁(yè)面加載完成,也就是說(shuō)瀏覽器窗口標(biāo)簽欄中不再出現(xiàn)轉(zhuǎn)動(dòng)的小圓圈,才會(huì)繼續(xù)執(zhí)行下一步。

三、顯式等待(WebDriverWait)

  顯示等待會(huì)每個(gè)一段時(shí)間(該時(shí)間一般都很短,默認(rèn)為0.5秒,也可以自定義),執(zhí)行自定義的程序判斷條件,如果判斷條件成立,就執(zhí)行下一步,否則繼續(xù)等待,直到超過(guò)設(shè)定的最長(zhǎng)等待時(shí)間,然后拋出TimeOutEcpection的異常信息。

alert_is_present():判斷頁(yè)面是否出現(xiàn)alert框

# coding:utf-8
from selenium import webdriver
#導(dǎo)入By類
from selenium.webdriver.common.by import By
#導(dǎo)入顯示等待類
from selenium.webdriver.support.ui import WebDriverWait
#導(dǎo)入期望場(chǎng)景類
from selenium.webdriver.support import expected_conditions

driver = webdriver.Chrome()

#alert_is_present():判斷頁(yè)面是否出現(xiàn)alert框
result=WebDriverWait(driver,10).until(expected_conditions.alert_is_present())
print(result.text)

element_located_selection_state_to_be(locator,state):判斷一個(gè)元素的狀態(tài)是否是給定的選擇狀態(tài)

第一個(gè)傳入?yún)?shù)是一個(gè)定位器,定位器是一個(gè)元組(by,path);第二個(gè)傳入?yún)?shù)表示期望的元素狀態(tài),True表示選中狀態(tài),F(xiàn)lase表示未選中

#element_located_selection_state_to_be():判斷一個(gè)元素的狀態(tài)是否是給定的選擇狀態(tài)
result=WebDriverWait(driver,10).until(expected_conditions.element_located_selection_state_to_be((By.ID,'kw'),True))

element_selection_state_to_be(driverObject,state):判斷給定的元素是否被選中

第一個(gè)傳入?yún)?shù)是一個(gè)webdriver對(duì)象,第二個(gè)參數(shù)是期望的元素的狀態(tài),True表示選中狀態(tài),F(xiàn)lase表示未選中

#element_selection_state_to_be():判斷給定的元素是否被選中
result=WebDriverWait(driver,10).until(expected_conditions.element_selection_state_to_be((driver.find_element_by_id('kw')),True))

element_located_to_be_selected(locator):期望某個(gè)元素處于被選中狀態(tài)

參數(shù)傳入的是一個(gè)定位器

#element_located_to_be_selected():期望某個(gè)元素處于被選中狀態(tài)
result=WebDriverWait(driver,10).until(expected_conditions.element_located_to_be_selected((By.ID,'kw')))

element_to_be_selected():期望某個(gè)元素處于選中狀態(tài)

傳入?yún)?shù)是一個(gè)webdriver實(shí)例對(duì)象

#element_to_be_selected():期望某個(gè)元素處于選中狀態(tài)
result=WebDriverWait(driver,10).until(expected_conditions.element_to_be_selected(driver.find_element_by_id('kw')))

element_to_be_clickable():判斷元素是否可見(jiàn)并且能被單擊,條件滿足返回頁(yè)面元素對(duì)象,否則返回Flase

#element_to_be_clickable():判斷元素是否可見(jiàn)并且能被單擊,條件滿足返回頁(yè)面元素對(duì)象,否則返回Flase
result=WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable(driver.find_element_by_id('hh')))

frame_to_be_available_and_switch_to_it(parm):判斷frame是否可用

如果可用返回True并切入到該frame,參數(shù)parm可以是定位器locator(by,path)組成的元組,或者定位方式:id、name、index(frame在頁(yè)面上索引號(hào)),或者webelement對(duì)象。

#frame_to_be_available_and_switch_to_it():判斷frame是否可用
#傳入ID值‘kk'
result1=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(By.ID,'kw'))
#傳入frame的webelement對(duì)象
result2=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_id('kw')))
#傳入frame在頁(yè)面中索引號(hào)
result3=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(1))

invisibility_of_element_located(locator):希望某個(gè)元素不可見(jiàn)或者不存在DOM中

滿足條件返回True,否則返回定位到的元素對(duì)象

#invisibility_of_element_located():希望某個(gè)元素不可見(jiàn)或者不存在DOM中,滿足條件返回True,否則返回定位到的元素對(duì)象
result8=WebDriverWait(driver,10,0.2).until(EC.invisibility_of_element_located(By.ID,'kw'))

visibility_of_element_located(locator):希望某個(gè)元素出現(xiàn)在DOM中并且可見(jiàn)

滿足條件返回該元素的頁(yè)面元素對(duì)象

#visibility_of_element_located():希望某個(gè)元素出現(xiàn)在DOM中并且可見(jiàn),滿足條件返回該元素的頁(yè)面元素對(duì)象
result9=WebDriverWait(driver,10,0.2).until(EC.visibility_of_element_located(driver.find_element_by_id('kw')))

visibility_of(webelement):希望某個(gè)元素出現(xiàn)在頁(yè)面的DOM中,并且可見(jiàn),滿足條件返回該元素的頁(yè)面元素對(duì)象

#visibility_of():希望某個(gè)元素出現(xiàn)在頁(yè)面的DOM中,并且可見(jiàn),滿足條件返回該元素的頁(yè)面元素對(duì)象
result10=WebDriverWait(driver,10,0.2).until(EC.visibility_of(driver.find_element_by_id('kw'))

visibility_of_any_elements_located(locator):希望某個(gè)元素出現(xiàn)在DOM中并且可見(jiàn)

如果滿足條件返回該元素的頁(yè)面元素對(duì)象

#visibility_of_any_elements_located():希望某個(gè)元素出現(xiàn)在DOM中并且可見(jiàn)
result11=WebDriverWait(driver,10,0.2).until(EC.visibility_of(By.TAG_NAME,'input'))

presence_of_all_elements_located(locator):判斷頁(yè)面至少有一個(gè)如果元素出現(xiàn),如果滿足條件,返回所有滿足定位表達(dá)式的頁(yè)面元素

#presence_of_all_elements_located():判斷頁(yè)面至少有一個(gè)如果元素出現(xiàn),如果滿足條件,返回所有滿足定位表達(dá)式的壓面元素
result12=WebDriverWait(driver,10,0.2).until(EC.presence_of_all_elements_located(By.ID,'kw'))

presence_of_element_located(locator):判斷某個(gè)元素是否存在DOM中,不一定可見(jiàn),存在返回該元素對(duì)象

#presence_of_element_located():判斷某個(gè)元素是否存在DOM中,不一定可見(jiàn),存在返回該元素對(duì)象
result12=WebDriverWait(driver,10,0.2).until(EC.presence_of_element_located(By.ID,'kw'))

staleness_of(webelement):判斷一個(gè)元素是否仍在DOM中,如果在規(guī)定時(shí)間內(nèi)已經(jīng)移除返回True,否則返回Flase

#staleness_of():判斷一個(gè)元素是否仍在DOM中,如果在規(guī)定時(shí)間內(nèi)已經(jīng)移除返回True,否則返回Flase
result13=WebDriverWait(driver,10,0.2).until(EC.staleness_of(driver.find_element_by_id('kw')))

text_to_be_present_in_element():判斷文本內(nèi)容test是否出現(xiàn)在某個(gè)元素中,判斷的是元素的text

#text_to_be_present_in_element():判斷文本內(nèi)容test是否出現(xiàn)在某個(gè)元素中,判斷的是元素的text
result15=WebDriverWait(driver,10,0.2).until(EC.text_to_be_present_in_element(By.TAG_NAME,"p"))

text_to_be_present_in_element_value():判斷text是否出現(xiàn)在元素的value屬性值中

#text_to_be_present_in_element_value():判斷text是否出現(xiàn)在元素的value屬性值中
result16=WebDriverWait(driver,10,0.2).until(EC.text_to_be_present_in_element_value((By.ID,'kw'),'隨便'))

title_contains():判斷頁(yè)面title標(biāo)簽的內(nèi)容包含partial_title,只需要部分匹配即可

#title_contains():判斷頁(yè)面title標(biāo)簽的內(nèi)容包含partial_title,只需要部分匹配即可,包含返回True,不包含返回Flase
result17=WebDriverWait(driver,10,0.2).until(EC.title_contains("你就知道"))

title_is():判斷頁(yè)面title內(nèi)容是與傳入的title_text內(nèi)容完全匹配

#title_is():判斷頁(yè)面title內(nèi)容是與傳入的title_text內(nèi)容完全匹配,匹配返回True,否則返回Flase
result18=WebDriverWait(driver,10,0.2).until(EC.title_is("百度一下,你就知道"))

到此這篇關(guān)于selenium WebDriverWait類等待機(jī)制的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)selenium WebDriverWait內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)logistic分類算法代碼

    python實(shí)現(xiàn)logistic分類算法代碼

    今天小編就為大家分享一篇python實(shí)現(xiàn)logistic分類算法代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇python 把數(shù)據(jù) json格式輸出的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Python操作MongoDB數(shù)據(jù)庫(kù)PyMongo庫(kù)使用方法

    Python操作MongoDB數(shù)據(jù)庫(kù)PyMongo庫(kù)使用方法

    這篇文章主要介紹了Python操作MongoDB數(shù)據(jù)庫(kù)PyMongo庫(kù)使用方法,本文講解了創(chuàng)建連接、連接數(shù)據(jù)庫(kù)、連接聚集、查看全部聚集名稱、查看聚集的一條記錄等操作方法,需要的朋友可以參考下
    2015-04-04
  • Python3多線程詳解

    Python3多線程詳解

    使用多線程,可以同時(shí)進(jìn)行多項(xiàng)任務(wù),可以使用戶界面更友好,還可以后臺(tái)執(zhí)行某些用時(shí)長(zhǎng)的任務(wù),同時(shí)具有易于通信的優(yōu)點(diǎn)。python3中多線程的實(shí)現(xiàn)使用了threading模塊,它允許同一進(jìn)程中運(yùn)行多個(gè)線程,本文介紹的非常詳細(xì),,需要的朋友可以參考下
    2023-05-05
  • Python中range()與np.arange()的具體使用

    Python中range()與np.arange()的具體使用

    本文主要介紹了Python中range()與np.arange()的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python 做曲線擬合和求積分的方法

    Python 做曲線擬合和求積分的方法

    今天小編就為大家分享一篇Python 做曲線擬合和求積分的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python實(shí)現(xiàn)提取指定名稱的文件并批量復(fù)制到其他文件夾

    Python實(shí)現(xiàn)提取指定名稱的文件并批量復(fù)制到其他文件夾

    本文介紹基于Python語(yǔ)言,讀取一個(gè)文件夾,并將其中每一個(gè)子文件夾內(nèi)符合名稱要求的文件加以篩選,并將篩選得到的文件復(fù)制到另一個(gè)目標(biāo)文件夾中的方法,需要的朋友可以參考下
    2023-10-10
  • 使用python計(jì)算不定積分的示例

    使用python計(jì)算不定積分的示例

    SymPy是一個(gè)用于符號(hào)數(shù)學(xué)的Python庫(kù),支持許多類型的數(shù)學(xué)對(duì)象,包括整數(shù)、有理數(shù)、實(shí)數(shù)、復(fù)數(shù)、函數(shù)、極限、積分、微分、方程、幾何等,這篇文章主要介紹了如何用python計(jì)算不定積分,需要的朋友可以參考下
    2024-07-07
  • Python pip更換清華源鏡像的詳細(xì)教程

    Python pip更換清華源鏡像的詳細(xì)教程

    大家經(jīng)常會(huì)使用 pip 進(jìn)行python 的第三方庫(kù)安裝,但是,有時(shí)會(huì)出現(xiàn)ERROR: No matching distribution found for PyQt6這類的錯(cuò)誤,其實(shí)大部分原因是我們國(guó)內(nèi)網(wǎng)絡(luò)的問(wèn)題,所以本文給大家介紹了Python pip更換清華源鏡像的詳細(xì)教程,需要的朋友可以參考下
    2024-09-09
  • Python合并多個(gè)裝飾器小技巧

    Python合并多個(gè)裝飾器小技巧

    這篇文章主要介紹了Python合并多個(gè)裝飾器小技巧,本文用改寫(xiě)調(diào)用函數(shù)的方式實(shí)現(xiàn)把多個(gè)裝飾器合并成一行、一個(gè)函數(shù)來(lái)調(diào)用,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

安义县| 黑山县| 商水县| 宣恩县| 长顺县| 竹山县| 化德县| 饶阳县| 库尔勒市| 鹤岗市| 宽甸| 呼伦贝尔市| 九江市| 普安县| 肃宁县| 宜良县| 昔阳县| 崇礼县| 枣强县| 贵州省| 浮梁县| 遂川县| 开化县| 正安县| 红河县| 濮阳市| 东港市| 潮州市| 禹州市| 乌兰县| 崇文区| 大兴区| 泽库县| 长顺县| 综艺| 四子王旗| 丰城市| 灵丘县| 旬阳县| 仪征市| 宜川县|