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

詳解Python中如何添加Selenium WebDriver等待

 更新時(shí)間:2023年11月05日 10:39:32   作者:跡憶客  
Selenium Web 驅(qū)動(dòng)程序提供兩種類型的等待, 第一個(gè)是隱式等待,第二個(gè)是顯式等待,本文主要為大家介紹了Python如何在Selenium Web驅(qū)動(dòng)程序中添加這兩種等待,需要的可以參考下

本文將介紹在Python中在Selenium Web驅(qū)動(dòng)程序中添加等待的示例。

Python Selenium Web 驅(qū)動(dòng)程序等待

大多數(shù) Web 應(yīng)用程序都使用 AJAX 技術(shù)。 因此,網(wǎng)頁上存在的不同元素需要不同的時(shí)間間隔才能完全上傳,因?yàn)槲诰W(wǎng)頁上存在之前無法找到任何文本。

我們可能會(huì)發(fā)現(xiàn)某些應(yīng)用程序的網(wǎng)頁在上傳之前并不存在特定文本。 這會(huì)在測(cè)試應(yīng)用程序時(shí)產(chǎn)生錯(cuò)誤。

這個(gè)問題可以通過等待來解決。 這些等待在網(wǎng)頁上搜索元素或任何其他操作時(shí)提供了靈活性。

Selenium Web 驅(qū)動(dòng)程序提供兩種類型的等待。 第一個(gè)是隱式等待,第二個(gè)是顯式等待。

本文討論了這兩種等待類型的詳細(xì)信息。

Selenium Web 驅(qū)動(dòng)程序中的隱式等待

由于網(wǎng)速慢或網(wǎng)站響應(yīng)慢,有時(shí)我們需要等待幾秒鐘才能獲得所有結(jié)果。 對(duì)于這種情況,隱式等待效果最好。

隱式等待告訴 Web 驅(qū)動(dòng)程序在特定時(shí)間輪詢 DOM,同時(shí)查找元素,以便在我們的 Web 驅(qū)動(dòng)程序獲取元素時(shí)使所有元素可用。 該進(jìn)程的默認(rèn)設(shè)置為 0。

一旦我們?cè)O(shè)置了隱式等待,它將持續(xù)到 Web 驅(qū)動(dòng)程序?qū)ο蟮纳芷凇?/p>

只要我們運(yùn)行相同的網(wǎng)絡(luò)驅(qū)動(dòng)程序而不關(guān)閉或重新啟動(dòng)并更改等待值,它就會(huì)是相同的量。

讓我們來看一個(gè)示例,我們將訪問一個(gè)網(wǎng)站并等待 10 秒鐘,然后單擊“關(guān)于我們”頁面鏈接,如下所示。

示例代碼:

# python
from selenium import webdriver

ChromeDriver = webdriver.Chrome()
ChromeDriver.implicitly_wait(10)
ChromeDriver.get("https://www.inventicosolutions.com/")
getElemByLink = ChromeDriver.find_element_by_link_text("About Us")
getElemByLink.click()

輸出:

從上面的示例中可以看到,加載頁面后,它等待了整整 10 秒,然后才轉(zhuǎn)到“關(guān)于我們”頁面。

Selenium Web 驅(qū)動(dòng)程序中的顯式等待

顯式等待是一種定義為等待特定條件發(fā)生并在代碼中進(jìn)一步處理的代碼類型。 顯式等待的極端情況是 time.sleep()。

這將等待的條件設(shè)置為精確的時(shí)間段。

一些適當(dāng)?shù)姆椒梢詭椭覀兙帉戯@式的代碼。 顯式等待是使用 Web 驅(qū)動(dòng)程序等待類并與 Expected_conditions 相結(jié)合來實(shí)現(xiàn)的。

如下所示,讓我們看一個(gè)示例,其中我們將使用顯式等待而不是隱式等待。

示例代碼:

# python
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ExpectedCond

chromeDriver = webdriver.Chrome()

chromeDriver.get("https://inventicosolutions.com")

getElembyLinkText = WebDriverWait(chromeDriver, 10).until(ExpectedCond.presence_of_element_located((By.LINK_TEXT, "About Us")))

getElembyLinkText.click()

輸出:

上述代碼的超時(shí)值為 10 秒。 Web 驅(qū)動(dòng)程序?qū)⒌却?10 秒,然后拋出超時(shí)異常。

應(yīng)用程序的網(wǎng)頁地址(URL)和文本元素可以根據(jù)要求用給定的代碼編寫。

Web 驅(qū)動(dòng)程序等待(顯式等待中使用的工具之一)具有這種內(nèi)置質(zhì)量,每 500 毫秒檢查一次預(yù)期條件,直到成功找到文本。

Python 中等待的預(yù)期條件

這些條件在自動(dòng)化 Web 瀏覽器時(shí)最常用,并且在 Web 驅(qū)動(dòng)程序中預(yù)定義。 這些條件包括:

  • title_is
  • title_contains
  • presence_of_element_located
  • visibility_of_element_located
  • visibility_of
  • presence_of_all_elements_located
  • text_to_be_present_in_element
  • text_to_be_present_in_element_value
  • frame_to_be_available_and_switch_to_it
  • invisibility_of_element_located
  • element_to_be_clickable
  • staleness_of
  • element_to_be_selected
  • element_located_to_be_selected
  • element_selection_state_to_be
  • element_located_selection_state_to_be
  • alert_is_present

我們可以通過導(dǎo)入以下庫將這些預(yù)期條件包含在我們的代碼中。

# python
from selenium.webdriver.support
import expected_conditions as ExpectedCond

Python 中的自定義等待條件

當(dāng)上述方法均不能滿足用戶的要求時(shí),可以創(chuàng)建自定義等待條件。 自定義條件是使用帶有 call() 方法的類創(chuàng)建的。

如下所示,讓我們看一個(gè)示例,在該示例中我們將創(chuàng)建一個(gè)自定義條件并嘗試讓我們的程序等待幾秒鐘。

示例代碼:

# python
class ElementWithClass(object):
    def __init__(self, location, className):
        self.location = location

        self.className = className

    def __call__(self, ChromeDriver):
        findElem = ChromeDriver.find_element(*self.location)

        if self.className in findElem.get_attribute("class"):
            return findElem
        else:
            return False

        wait = WebDriverWait(ChromeDriver, 10)
        findElem = wait.until(element_has_css_class((By.ID, 'myId'), "myClass"))

如果找到該元素,此代碼將為用戶提供 true,否則返回 false。

因此,我們通過一些示例討論了在 Python 中添加等待的不同方法。 我們希望您喜歡這個(gè)主題并從中學(xué)到一些東西。

到此這篇關(guān)于詳解Python中如何添加Selenium WebDriver等待的文章就介紹到這了,更多相關(guān)python添加Selenium Web等待內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python模擬登錄的多種方法(四種)

    Python模擬登錄的多種方法(四種)

    這篇文章主要介紹了Python模擬登錄的多種方法,大概給大家提供了四種方法,每種方法給大家介紹的都很詳細(xì),感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-06-06
  • python 中使用yagmail 發(fā)送郵件功能

    python 中使用yagmail 發(fā)送郵件功能

    這篇文章主要介紹了python 中使用yagmail 發(fā)送郵件功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Python根據(jù)字符串語義相似度計(jì)算的多種實(shí)現(xiàn)算法

    Python根據(jù)字符串語義相似度計(jì)算的多種實(shí)現(xiàn)算法

    這篇文章主要介紹了Python根據(jù)字符串語義相似度計(jì)算的多種實(shí)現(xiàn)算法,以下是幾種基于語義的字符串相似度計(jì)算方法,每種方法都會(huì)返回0.0到1.0之間的相似度分?jǐn)?shù)(保留一位小數(shù)),需要的朋友可以參考下
    2025-07-07
  • 詳談python3 numpy-loadtxt的編碼問題

    詳談python3 numpy-loadtxt的編碼問題

    下面小編就為大家分享一篇詳談python3 numpy-loadtxt的編碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python操作excel的方法

    python操作excel的方法

    Openpyxl是一個(gè)常用的python庫,用于對(duì)Excel的常用格式及其模板進(jìn)行數(shù)據(jù)讀寫等操作。這篇文章主要介紹了python操作excel的方法,需要的朋友可以參考下
    2018-08-08
  • Python腳本連接MySQL數(shù)據(jù)庫的完整指南

    Python腳本連接MySQL數(shù)據(jù)庫的完整指南

    本文將詳細(xì)展示如何使用Python及其pymysql庫來連接MySQL數(shù)據(jù)庫并執(zhí)行SQL語句,除了基本查詢外,還會(huì)介紹如何進(jìn)行數(shù)據(jù)的插入,更新和刪除操作,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-01-01
  • 利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境

    利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境

    這篇文章主要介紹了利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Pytest單元測(cè)試框架生成HTML測(cè)試報(bào)告及優(yōu)化的步驟

    Pytest單元測(cè)試框架生成HTML測(cè)試報(bào)告及優(yōu)化的步驟

    本文主要介紹了Pytest單元測(cè)試框架生成HTML測(cè)試報(bào)告及優(yōu)化的步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • pycharm快捷鍵匯總

    pycharm快捷鍵匯總

    本文給大家分享的是PyCharm開發(fā)工具的快捷鍵大全整理,非常詳細(xì),適合使用PyCharm作為開發(fā)工具的開發(fā)人員參考使用,能夠幫助提高開發(fā)效率和速度
    2020-02-02
  • python?實(shí)現(xiàn)syslog?服務(wù)器的詳細(xì)過程

    python?實(shí)現(xiàn)syslog?服務(wù)器的詳細(xì)過程

    這篇文章主要介紹了python?實(shí)現(xiàn)syslog服務(wù)器的詳細(xì)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

昭通市| 嘉荫县| 美姑县| 大余县| 漳平市| 赫章县| 合水县| 福建省| 花莲县| 南和县| 永川市| 赣州市| 华亭县| 姜堰市| 定远县| 博兴县| 兰考县| 独山县| 洪雅县| 玛曲县| 榆中县| 巴林左旗| 双桥区| 徐水县| 张掖市| 无极县| 青河县| 贵德县| 庄河市| 邮箱| 左权县| 临夏县| 宁明县| 分宜县| 社会| 和静县| 汝州市| 二手房| 禹州市| 马尔康县| 罗甸县|