」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何確保 Python Selenium 中載入多個元素?

如何確保 Python Selenium 中載入多個元素?

發佈於2024-11-08
瀏覽:983

How to Ensure Multiple Elements Load in Python Selenium?

Python Selenium:確保多個元素載入

透過AJAX 處理動態載入的元素時,確認其外觀可能具有挑戰性。為了處理這種情況,我們將利用 Selenium 的 WebDriverWait 及其各種策略來確保多個元素的存在。

所有元素的可見性:

驗證所有與特定選擇器匹配的元素,我們可以使用visibility_of_all_elements_ located()條件:

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

elements = WebDriverWait(driver, 20).until(
    EC.visibility_of_all_elements_located(
        (By.CSS_SELECTOR, "ul.ltr li[id^='t_b_'] > a[id^='t_a_'][href]")
    )
)

等待特定數量的元素:

如果需要等待特定數量的元素加載,可以使用帶有ExpectedConditions 的lambda 函數類:

WebDriverWait(driver, 20).until(
    lambda driver: len(driver.find_elements_by_xpath(selector)) > int(myLength)
)

子元素的XPath:

要等待父元素中的子元素,而不是搜尋整個DOM,您可以使用XPath 表達式:

WebDriverWait(driver, 20).until(
    EC.presence_of_element_located(
        (By.XPATH, "//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_')]")
    )
)

自訂等待條件:

如果您喜歡建立自己的等待條件,您可以定義webdriver.support.ui.ExpectedCondition 的子類別:

class MoreThanOne(webdriver.support.ui.ExpectedCondition):
    def __init__(self, selector):
        self.selector = selector

    def __call__(self, driver):
        elements = driver.find_elements_by_css_selector(self.selector)
        return len(elements) > 1
WebDriverWait(driver, 30).until(MoreThanOne('li'))

防止DOM 中元素遺失:

為了避免在查找操作後丟失當前元素,請在執行等待之前將其存儲在變數中:

element = driver.find_element_by_css_selector('ul')
WebDriverWait(element, 30).until(MoreThanOne('li'))

結論:

這些技術提供了一種靈活而健壯的方式來等待加載硒中的多種元素。根據您的要求,選擇最適合您的用例的方法。

最新教學 更多>
  • SQLite 參數替換是否會導致 Python 中的綁定錯誤?
    SQLite 參數替換是否會導致 Python 中的綁定錯誤?
    SQLite 參數替換問題在Python 2.5 中使用SQLite3 時,嘗試迭代列表並從中檢索資料時會出現一個常見問題一個資料時會出現一個常見問題一個資料庫.使用建議的「?」作為 SQL 注入預防措施的參數通常會導致有關綁定數量的錯誤。 經過調查,很明顯該錯誤源自於資料庫表的初始建立。建立語句,...
    程式設計 發佈於2024-11-08
  • 可以處理變數的 ID 以存取 Python 中的物件嗎?
    可以處理變數的 ID 以存取 Python 中的物件嗎?
    變數的 ID 可以取消引用嗎? 在 Python 中,id() 函數傳回物件的唯一識別碼。這個標識符可以儲存在變數中,但是這個變數的ID可以解引用嗎? 從學術角度來看,答案是肯定的。 _ctypes 模組提供了一個函數 PyObj_FromPtr(),可以將指標轉換為 Python 物件。使用此函數...
    程式設計 發佈於2024-11-08
  • 為什麼 imagecreatefrompng() 產生黑色背景而不是透明區域?
    為什麼 imagecreatefrompng() 產生黑色背景而不是透明區域?
    imagecreatefrompng() 產生黑色背景而不是透明區域? 在 PHP 中,imagecreatefrompng() 函數通常用於處理 PNG映像。然而,據觀察,使用此函數時,PNG 透明度可能會轉換為純黑色。 要解決此問題,可以在使用imagecreatetruecolor() 建立新...
    程式設計 發佈於2024-11-08
  • Go反射中reflect.Type和reflect.Value的主要差異是什麼?
    Go反射中reflect.Type和reflect.Value的主要差異是什麼?
    Go 中的反射類型和值Go 中的反射允許開發人員在運行時檢查和操作類型和值。了解它們的差異對於有效使用反射至關重要。 反射中的類型與值在反射中,reflect.TypeOf(i) 返回一個reflect.Type 對象,而reflect.ValueOf(i)返回一個reflect.Value obj...
    程式設計 發佈於2024-11-08
  • 如何在 AngularJS 中安全地設定變數的 iframe src 屬性?
    如何在 AngularJS 中安全地設定變數的 iframe src 屬性?
    在AngularJS 中從變數設定iframe src 屬性在AngularJS 中,嘗試從下列位置設定iframe 的src 屬性時可能會遭遇到問題一個變數。為了解決這個問題,這裡有一個逐步指南:1。注入 $sce 服務將 $sce(嚴格上下文轉義)服務注入控制器以處理清理。 function A...
    程式設計 發佈於2024-11-08
  • 為什麼我的 KeyListener 無法在 JPanel 中運作?
    為什麼我的 KeyListener 無法在 JPanel 中運作?
    JPanel 中KeyListeners 無回應:常見問題當使用KeyListeners 偵測JPanel 中的按鍵時,開發人員經常遇到這樣的問題:偵聽器無法觸發所需的操作。此問題可能由多個因素引起。 焦點元件約束KeyListener 依賴將自身附加到焦點元件才能正常運作。預設情況下,焦點不會自動...
    程式設計 發佈於2024-11-08
  • 從 React 到 React Native 的旅程
    從 React 到 React Native 的旅程
    作为一名 React / JS 开发人员,您可能有这样的想法 “我应该学习 React Native 吗?” 这是一个公平的问题,也是我几年前问自己的问题。事实证明,学习 React Native 绝对是正确的决定。这让我成为了亚马逊的高级开发倡导者,我现在使用 React Native 跨 And...
    程式設計 發佈於2024-11-08
  • 使用 Filament 和 Laravel 建立強大的管理面板:逐步指南
    使用 Filament 和 Laravel 建立強大的管理面板:逐步指南
    Laravel 是一个强大的 PHP 框架,为开发 Web 应用程序提供了坚实的基础。 Filament 是一个开源、优雅的 Laravel 管理面板和表单构建器,可简化管理界面的创建。本指南将引导您使用最新版本的 Filament 和 Laravel 构建强大的管理面板。 Laravel SaaS...
    程式設計 發佈於2024-11-08
  • 如何從 Pandas DataFrame 提取列標題?
    如何從 Pandas DataFrame 提取列標題?
    從 Pandas DataFrame 擷取列標題從 Pandas DataFrame 擷取列標題Pandas DataFrame 是通用的資料結構,可實現高效率的資料操作與分析。一項常見任務涉及提取列標題,這對於獲取 DataFrame 結構的概述或進一步處理非常有用。 假設您有一個從使用者輸入匯入...
    程式設計 發佈於2024-11-08
  • 透過範例解釋 Web 儲存 API
    透過範例解釋 Web 儲存 API
    Web Storage API: বিস্তারিত আলোচনা Web Storage API হলো জাভাস্ক্রিপ্টের একটি শক্তিশালী API যা ব্রাউজারে ব্যবহারকারীর ডেটা স্টোর করার জন্য ব্যবহ...
    程式設計 發佈於2024-11-08
  • 使用 Web 工具進行 Android 開發:使用 Ionic React 進行生產的最快方式
    使用 Web 工具進行 Android 開發:使用 Ionic React 進行生產的最快方式
    Investing in Android development can yield a huge device market share, expanded market reach, and high return on investment. With over 6.8 billion sma...
    程式設計 發佈於2024-11-08
  • 在Python中如何檢查字串是否以“hello”開頭?
    在Python中如何檢查字串是否以“hello”開頭?
    在Python中驗證以「hello」開頭的字串在Python中,判斷字串是否以「hello」開頭類似於Bash的常規表達方式。實作方法如下:aString = "hello world" aString.startswith("hello")startswit...
    程式設計 發佈於2024-11-08
  • 使用 Flama JWT 身份驗證保護 ML API
    使用 Flama JWT 身份驗證保護 ML API
    You've probably heard about the recent release of Flama 1.7 already, which brought some exciting new features to help you with the development and pro...
    程式設計 發佈於2024-11-08
  • 掌握 MySQL 效能:MySQL 延遲是什麼及其重要性
    掌握 MySQL 效能:MySQL 延遲是什麼及其重要性
    了解数据库性能的复杂性可能具有挑战性,但了解延迟等关键指标至关重要。随着企业越来越依赖数据驱动的洞察力,确保数据库快速有效地响应变得至关重要。在本文中,我们将深入探讨 MySQL 延迟的概念、其重要性,以及数据库优化先驱 Releem 如何处理此指标。 什么是延迟? 延迟是一个在从网...
    程式設計 發佈於2024-11-08
  • 如何以程式設計方式檢查預設瀏覽器是否在 Android 上運行?
    如何以程式設計方式檢查預設瀏覽器是否在 Android 上運行?
    檢查Android上的應用程式執行狀態作為Android開發者,您可能經常會遇到需要檢查特定應用程式是否運行的情況,例如預設瀏覽器正在運行。此功能對於在應用程式中實現條件行為或互動至關重要。 要以程式設計方式完成此操作,一種簡單的方法涉及利用 ActivityManager 類別。以下程式碼片段提供...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3