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

python自動(dòng)化測(cè)試selenium核心技術(shù)三種等待方式詳解

 更新時(shí)間:2021年11月13日 11:10:07   作者:aovenus  
這篇文章主要為大家介紹了python自動(dòng)化測(cè)試selenium的核心技術(shù)三種等待方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

UI自動(dòng)化測(cè)試過(guò)程中,可能會(huì)出現(xiàn)因測(cè)試環(huán)境不穩(wěn)定、網(wǎng)絡(luò)慢等情況,如果不做任何處理的話,會(huì)出現(xiàn)無(wú)法定位到特定元素而報(bào)錯(cuò),導(dǎo)致自動(dòng)化測(cè)試無(wú)法順利執(zhí)行。

selenium官網(wǎng)手冊(cè):Waits | Selenium

slenium自動(dòng)化測(cè)試中,主要涉及三種等待方式:    

1 使用python自帶模塊time的sleep方式     

缺點(diǎn):即使網(wǎng)絡(luò)條件較好時(shí),依舊按照預(yù)定固定時(shí)間等待,一般不建議使用,腳本調(diào)試可使用。

示例腳本:

from selenium import  webdriver
from time import sleep
class TestWait(object):
    driver = webdriver.Chrome()
    driver.get(http://www.baidu.com) 
    def test_sleep(self):
        self.driver.find_element_by_id("kw").send_keys("sleep test")
        # sleep(2) #等待固定時(shí)間
        self.driver.implicitly_wait(2)  # 隱式等待
        self.driver.find_element_by_id("su").click()
        self.driver.quit()
if __name__ == '__main__':
    wait=TestWait()
    wait.test_sleep()

2 隱式等待(implicitly_wait)

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

注意:隱式等待對(duì)driver整個(gè)周期都起作用,一般在最開(kāi)始設(shè)置一次就可以了。不要當(dāng)做固定等待,哪里都設(shè)置隱式等待。

示例腳本:

from selenium import  webdriver
from time import sleep 
class TestWait(object):
    driver = webdriver.Chrome()
    driver.get(http://www.baidu.com) 
    def test_sleep(self):
        self.driver.find_element_by_id("kw").send_keys("sleep test")
        self.driver.implicitly_wait(2)  # 隱式等待
        self.driver.find_element_by_id("su").click()
        self.driver.quit()
if __name__ == '__main__':
    wait=TestWait()
    wait.test_sleep()

3 顯示等待(WebDriverWait)

顯式等待允許等待條件的發(fā)生,所以非常適合在瀏覽器及其DOM和WebDriver腳本之間同步狀態(tài)。

需要引入包:from selenium.webdriver.support.wait import WebDriverWait

WebDriverWait參數(shù)說(shuō)明:

WebDriverWait(driver, timeout=3).until(some_condition)

兩種方法:until和util_not

場(chǎng)景:

打開(kāi)百度首頁(yè),等待頁(yè)面標(biāo)題出現(xiàn):百度一下,你就知道,再執(zhí)行輸入搜索關(guān)鍵詞,點(diǎn)擊“百度一下”按鈕。

示例腳本:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
class TestWait(object):
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.get(http://www.baidu.com) 
    def test_webdreiverwait(self):
        webdreiverwaits =WebDriverWait(self.driver,2)
        webdreiverwaits.until(ec.title_is("百度一下,你就知道"))
        self.driver.find_element_by_id("kw").send_keys("test_webdreiverwait test")
        self.driver.find_element_by_id("su").click() 
    def teardown(self):
        self.driver.quit() 
if __name__ == '__main__':
    wait=TestWait()
    wait.test_webdreiverwait()

三種等待完整示例腳本:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
class TestWait(object):
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.get("http://www.baidu.com")
     def test_sleep(self):
        self.driver.find_element_by_id("kw").send_keys("sleep test")
        sleep(2) #等待固定時(shí)間
     self.driver.find_element_by_id("su").click()  
    def test_implicitly(self):
        self.driver.find_element_by_id("kw").send_keys("implicitly test")
        self.driver.implicitly_wait(2)  # 隱式等待
     self.driver.find_element_by_id("su").click() 
    def test_webdreiverwait(self):
        webdreiverwaits =WebDriverWait(self.driver,2)
        webdreiverwaits.until(ec.title_is("百度一下,你就知道"))
        self.driver.find_element_by_id("kw").send_keys("test_webdreiverwait test")
        self.driver.find_element_by_id("su").click() 
    def teardown(self):
        self.driver.quit() 
if __name__ == '__main__':
    wait=TestWait()
    # wait.test_sleep()
    # wait.test_implicitly()
    wait.test_webdreiverwait()

【常見(jiàn)問(wèn)題】:運(yùn)行腳本報(bào)empty suite:

from selenium import  webdriver
from time import sleep
class TestWait(object):
    def __init__(self):
    	self.driver = webdriver.Chrome()
    	self.driver.get('http://www.baidu.com') 
    def test_sleep(self):
        self.driver.find_element_by_id("kw").send_keys("sleep test")
        # sleep(2) #等待固定時(shí)間
        self.driver.implicitly_wait(2)  # 隱式等待
        self.driver.find_element_by_id("su").click()
        self.driver.quit()
if __name__ == '__main__':
    wait=TestWait()
    wait.test_sleep()

【解決方法】:腳本修改

from selenium import webdriver
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait 
class TestCase(object): 
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.get('http://www.baidu.com')
        # sleep(2) 
    def test_sleep(self):
        self.driver.find_element_by_id('kw').send_keys('selenium')
        # sleep(2) # 線程阻塞 blocking wait
        self.driver.find_element_by_id('su').click()
        # sleep(3)  
    def test_implicitly(self):
        self.driver.implicitly_wait(10)
        self.driver.find_element_by_id('kw').send_keys('selenium')
        # sleep(2) # 線程阻塞 blocking wait
        self.driver.find_element_by_id('su').click()
        # sleep(3) 
     def test_wait(self):
        wait = WebDriverWait(self.driver,2)
        wait.until(EC.title_is('百度一下,你就知道'))
        self.driver.find_element_by_id('kw').send_keys('selenium')
        # sleep(2) # 線程阻塞 blocking wait
        self.driver.find_element_by_id('su').click()
        # sleep(3)
    def teardown(self):
        self.driver.quit() 
if __name__ == '__main__':
    case = TestCase()
    # case.test_sleep()
    # case.test_implicitly()
    case.test_wait()

以上:極客時(shí)間課程:selenium自動(dòng)化測(cè)試學(xué)習(xí)總結(jié)!

以上就是python自動(dòng)化測(cè)試selenium核心技術(shù)三種等待方式詳解的詳細(xì)內(nèi)容,更多關(guān)于selenium三種等待方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • numpy如何處理Nan和inf

    numpy如何處理Nan和inf

    numpy是一個(gè)強(qiáng)大的科學(xué)計(jì)算庫(kù),在處理數(shù)據(jù)時(shí)經(jīng)常會(huì)遇到NaN(不是數(shù)字)和Inf(無(wú)窮大)的情況,排序可以幫助我們查看這些特殊值的分布,使用np.isnan()函數(shù)可以生成一個(gè)布爾數(shù)組,用于判斷哪些是NaN值,而np.isinf()函數(shù)則用于檢測(cè)Inf值
    2024-09-09
  • Python爬蟲基礎(chǔ)之requestes模塊

    Python爬蟲基礎(chǔ)之requestes模塊

    這篇文章主要介紹了Python爬蟲基礎(chǔ)之requestes模塊,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python實(shí)現(xiàn)Excel文件的合并(以新冠疫情數(shù)據(jù)為例)

    Python實(shí)現(xiàn)Excel文件的合并(以新冠疫情數(shù)據(jù)為例)

    這篇將以新冠疫情數(shù)據(jù)為例,詳細(xì)介紹了如何利用Python實(shí)現(xiàn)合并Excel文件,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-03-03
  • python中裝飾器級(jí)連的使用方法示例

    python中裝飾器級(jí)連的使用方法示例

    裝飾器本質(zhì)上是一個(gè)Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動(dòng)的前提下增加額外功能,下面這篇文章主要給大家介紹了關(guān)于python中裝飾器級(jí)連的使用方法,需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • Python實(shí)現(xiàn)遍歷windows所有窗口并輸出窗口標(biāo)題的方法

    Python實(shí)現(xiàn)遍歷windows所有窗口并輸出窗口標(biāo)題的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)遍歷windows所有窗口并輸出窗口標(biāo)題的方法,涉及Python調(diào)用及遍歷windows窗口句柄的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • python給list排序的簡(jiǎn)單方法

    python給list排序的簡(jiǎn)單方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python給list排序的簡(jiǎn)單方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-12-12
  • python如何利用paramiko執(zhí)行服務(wù)器命令

    python如何利用paramiko執(zhí)行服務(wù)器命令

    這篇文章主要介紹了python如何利用paramiko執(zhí)行服務(wù)器命令,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • python 利用PyAutoGUI快速構(gòu)建自動(dòng)化操作腳本

    python 利用PyAutoGUI快速構(gòu)建自動(dòng)化操作腳本

    我們經(jīng)常遇到需要進(jìn)行大量重復(fù)操作的時(shí)候,比如:網(wǎng)頁(yè)上填表,對(duì) web 版本 OA 進(jìn)行操作,自動(dòng)化測(cè)試或者給新系統(tǒng)首次添加數(shù)據(jù)等,今天就利用PyAutoGUI構(gòu)建自動(dòng)化操作腳本完成這些重復(fù)的需求
    2021-05-05
  • 利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法

    利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法

    這篇文章主要介紹了利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • 使用Python進(jìn)行Ping測(cè)試的操作指南

    使用Python進(jìn)行Ping測(cè)試的操作指南

    在網(wǎng)絡(luò)工程中,Ping測(cè)試是一種常用的網(wǎng)絡(luò)診斷工具,用于檢查網(wǎng)絡(luò)連接的可達(dá)性和響應(yīng)時(shí)間,隨著Python編程語(yǔ)言的廣泛應(yīng)用,越來(lái)越多的網(wǎng)絡(luò)工程師開(kāi)始使用Python進(jìn)行自動(dòng)化網(wǎng)絡(luò)測(cè)試和管理任務(wù),本篇文章將詳細(xì)介紹如何使用Python進(jìn)行Ping測(cè)試,需要的朋友可以參考下
    2024-06-06

最新評(píng)論

镇康县| 赣州市| 桃园市| 墨竹工卡县| 攀枝花市| 上栗县| 邵阳县| 洱源县| 澄江县| 石泉县| 武乡县| 泸西县| 安岳县| 景德镇市| 渝北区| 浑源县| 临漳县| 革吉县| 延长县| 乌兰浩特市| 古交市| 洛浦县| 玉溪市| 鸡泽县| 嘉兴市| 湖北省| 黔江区| 大关县| 易门县| 武强县| 铜鼓县| 太谷县| 双桥区| 呼图壁县| 巫山县| 宜君县| 景洪市| 永顺县| 昆明市| 邢台市| 炎陵县|