欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Selenium中等待設置的實現(xiàn)

 更新時間:2023年12月22日 15:07:37   作者:Rocky006  
本文主要介紹了Python Selenium中等待設置的實現(xiàn),過詳實的示例代碼,深入介紹了顯式等待、隱式等待、自定義等待條件、多重等待條件、頁面加載狀態(tài)的等待、元素存在與可見性等待、Fluent等待以及異步JavaScript加載的等待,感興趣的可以了解一下

概要

在Web自動化測試中,等待是至關重要的一環(huán),而Selenium提供了豐富的等待設置來確保測試腳本的可靠性和穩(wěn)定性。本文將深入研究Python Selenium中常用的必備等待設置,包括顯式等待、隱式等待、自定義等待條件等多個方面。通過詳實的示例代碼,將為大家提供全面而深入的學習體驗。

顯式等待

顯式等待是在特定條件下等待某個元素的出現(xiàn)或者消失。以下是一個等待元素可點擊的示例:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 顯式等待
element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, 'example_id'))
)

element.click()

隱式等待

隱式等待是在整個會話中等待元素出現(xiàn)的最長時間。設置一次即可,全局生效:

from selenium import webdriver

# 隱式等待
driver = webdriver.Chrome()
driver.implicitly_wait(10)

driver.get('https://example.com')
element = driver.find_element(By.ID, 'example_id')

自定義等待條件

有時候我們需要根據(jù)自定義的條件等待,可以使用expected_conditions中的expected_conditions類:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 自定義等待條件
class ElementHasText:
    def __init__(self, locator, text_):
        self.locator = locator
        self.text = text_

    def __call__(self, driver):
        element_text = EC._find_element(driver, self.locator).text
        return self.text in element_text

element_locator = (By.ID, 'example_id')
wait = WebDriverWait(driver, 10)
wait.until(ElementHasText(element_locator, 'Expected Text'))

多重等待條件

有時我們需要等待多個條件同時滿足,可以使用expected_conditions中的and_or_

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 多重等待條件
element_locator = (By.ID, 'example_id')
wait = WebDriverWait(driver, 10)
wait.until(EC.and_(
    EC.element_to_be_clickable(element_locator),
    EC.visibility_of_element_located(element_locator)
))

頁面加載狀態(tài)的等待

在Web自動化測試中,頁面的加載狀態(tài)是一個關鍵考量因素。Selenium提供了expected_conditions中的document_to_be_ready_state來等待頁面加載完成:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 頁面加載狀態(tài)的等待
wait = WebDriverWait(driver, 10)
wait.until(EC.document_to_be_ready_state('complete'))

元素存在與可見性等待

除了常規(guī)的元素等待,有時還需要等待元素的出現(xiàn)或者可見性。以下是一個等待元素存在并可見的示例:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 元素存在與可見性等待
element_locator = (By.ID, 'example_id')
wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located(element_locator))

Fluent等待

Fluent等待允許在等待期間設置輪詢條件,增加了等待的靈活性。以下是一個Fluent等待的示例:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import FluentWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# Fluent等待
wait = WebDriverWait(driver, 10)
element = FluentWait(driver, timeout=10, poll_frequency=1, ignored_exceptions=[TimeoutException]) \
    .until(lambda x: x.find_element(By.ID, 'example_id'))

異步JavaScript加載的等待

對于異步JavaScript加載的元素,可以使用expected_conditions中的invisibility_of_element_located來等待其加載完成:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 異步JavaScript加載的等待
element_locator = (By.ID, 'async_element')
wait = WebDriverWait(driver, 10)
wait.until(EC.invisibility_of_element_located(element_locator))

總結

在本篇文章中,全面深入地探討了Python Selenium中常用的必備等待設置,旨在為Web自動化測試提供更為全面和深入的學習體驗。通過詳實的示例代碼,深入介紹了顯式等待、隱式等待、自定義等待條件、多重等待條件、頁面加載狀態(tài)的等待、元素存在與可見性等待、Fluent等待以及異步JavaScript加載的等待。這些等待設置不僅僅是簡單的時間延遲,更是在確保腳本執(zhí)行的可靠性和穩(wěn)定性方面的必備工具。

通過顯式等待,能夠精確等待某個特定條件的出現(xiàn)或消失,提高了腳本的精準性。隱式等待為整個會話提供了最長等待時間,全局有效,確保了在查找元素時的超時容忍度。自定義等待條件和多重等待條件則進一步增強了等待的靈活性,適應了更多復雜的測試場景。還深入研究了頁面加載狀態(tài)的等待,元素存在與可見性等待,F(xiàn)luent等待以及異步JavaScript加載的等待,涵蓋了更廣泛的測試需求。這些等待設置的巧妙應用,可以在處理異步加載、提高頁面加載的穩(wěn)定性等方面展現(xiàn)出強大的效果。

到此這篇關于Python Selenium中等待設置的實現(xiàn)的文章就介紹到這了,更多相關Python Selenium等待設置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python代碼實現(xiàn)列表分組計數(shù)

    Python代碼實現(xiàn)列表分組計數(shù)

    這篇文章主要介紹了Python代碼實現(xiàn)列表分組計數(shù),利用Python代碼實現(xiàn)了使用分組函數(shù)對列表進行分組,并計算每組的元素個數(shù)的功能,需要的朋友可以參考一下
    2021-11-11
  • pyinstaller打包找不到文件的問題解決

    pyinstaller打包找不到文件的問題解決

    這篇文章主要介紹了pyinstaller打包找不到文件的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python調用opencv實現(xiàn)貓臉檢測功能

    python調用opencv實現(xiàn)貓臉檢測功能

    這篇文章主要介紹了python調用opencv實現(xiàn)貓臉檢測功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • numpy 進行數(shù)組拼接,分別在行和列上合并的實例

    numpy 進行數(shù)組拼接,分別在行和列上合并的實例

    今天小編就為大家分享一篇numpy 進行數(shù)組拼接,分別在行和列上合并的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 用 Python 元類的特性實現(xiàn) ORM 框架

    用 Python 元類的特性實現(xiàn) ORM 框架

    利用 Python 元類的特性實現(xiàn) ORM 框架的 insert 功能,通過操作類對象,對數(shù)據(jù)表進行數(shù)據(jù)增加操作。由于 ORM 比較復雜,也不要重復造輪子,就完成一個 insert 相類似的ORM,理解其中的道理即可。
    2021-05-05
  • python新手學習可變和不可變對象

    python新手學習可變和不可變對象

    在本篇文章里小編給大家分享了是一篇關于python可變對象和不可變對象的基礎知識點內容,有需要的朋友們可以參考下。
    2020-06-06
  • 淺談Python3中打開文件的方式(With open)

    淺談Python3中打開文件的方式(With open)

    本文主要介紹了淺談Python3中打開文件的方式(With open),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python異步編程之yield?from的用法詳解

    Python異步編程之yield?from的用法詳解

    yield?from?是Python3.3?后新加的語言結構,可用于簡化yield表達式的使用,這篇文章主要為大家詳細介紹了yield?from的用法,需要的可以了解一下
    2023-12-12
  • python3+PyQt5實現(xiàn)拖放功能

    python3+PyQt5實現(xiàn)拖放功能

    這篇文章主要為大家詳細介紹了python3+PyQt5實現(xiàn)拖放功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python PIL Image 圖像處理基本操作實例

    python PIL Image 圖像處理基本操作實例

    這篇文章主要介紹了python PIL Image 圖像處理基本操作實例包括圖片加載、灰度圖,圖像通道分離和合并,在圖像上輸出文字,圖像縮放,圖像閾值分割、 二值化,圖像裁剪需要的朋友可以參考下
    2022-04-04

最新評論