最新国产好看的视频,伊人天堂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)頁(yè)上存在的不同元素需要不同的時(shí)間間隔才能完全上傳,因?yàn)槲诰W(wǎng)頁(yè)上存在之前無(wú)法找到任何文本。

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

這個(gè)問(wèn)題可以通過(guò)等待來(lái)解決。 這些等待在網(wǎng)頁(yè)上搜索元素或任何其他操作時(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ì)是相同的量。

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

示例代碼:

# 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()

輸出:

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

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

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

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

一些適當(dāng)?shù)姆椒梢詭椭覀兙帉戯@式的代碼。 顯式等待是使用 Web 驅(qū)動(dòng)程序等待類并與 Expected_conditions 相結(jié)合來(lái)實(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)頁(yè)地址(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

我們可以通過(guò)導(dǎo)入以下庫(kù)將這些預(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。

因此,我們通過(guò)一些示例討論了在 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ù)字符串語(yǔ)義相似度計(jì)算的多種實(shí)現(xiàn)算法

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

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

    詳談python3 numpy-loadtxt的編碼問(wèn)題

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

    python操作excel的方法

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

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

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

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

    這篇文章主要介紹了利用pipenv和pyenv管理多個(gè)相互獨(dú)立的Python虛擬開(kāi)發(fā)環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)化的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • pycharm快捷鍵匯總

    pycharm快捷鍵匯總

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

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

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

最新評(píng)論

龙岩市| 新昌县| 巴青县| 沁源县| 福泉市| 阿合奇县| 成都市| 台南县| 台安县| 鞍山市| 磐安县| 亳州市| 溧阳市| 新巴尔虎左旗| 天峻县| 云林县| 南召县| 喀喇沁旗| 尖扎县| 茂名市| 兴安盟| 台南市| 宾川县| 嵊州市| 华阴市| 武义县| 米泉市| 开封县| 泾川县| 铜鼓县| 时尚| 梅州市| 兴和县| 玛多县| 凌源市| 中山市| 多伦县| 南靖县| 新田县| 万山特区| 长春市|