Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memastikan Pelbagai Elemen Dimuatkan dalam Python Selenium?

Bagaimana untuk Memastikan Pelbagai Elemen Dimuatkan dalam Python Selenium?

DDD
DDDasal
2024-10-30 00:52:02865semak imbas

How to Ensure Multiple Elements Load in Python Selenium?

Python Selenium: Memastikan Pelbagai Elemen Dimuatkan

Apabila berurusan dengan elemen yang dimuatkan secara dinamik melalui AJAX, mungkin sukar untuk mengesahkan penampilannya. Untuk mengendalikan senario ini, kami akan menggunakan WebDriverWait Selenium dan pelbagai strateginya untuk memastikan kehadiran berbilang elemen.

Keterlihatan Semua Elemen:

Untuk mengesahkan keterlihatan semua elemen yang sepadan dengan pemilih tertentu, kami boleh menggunakan syarat visibility_of_all_elements_located():

<code class="python">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]")
    )
)</code>

Menunggu Bilangan Elemen Tertentu:

Jika anda perlu menunggu untuk bilangan elemen tertentu untuk dimuatkan, anda boleh menggunakan fungsi lambda dengan kelas ExpectedConditions:

<code class="python">WebDriverWait(driver, 20).until(
    lambda driver: len(driver.find_elements_by_xpath(selector)) > int(myLength)
)</code>

XPath for Child Elements:

Untuk menunggu anak elemen dalam elemen induk, dan bukannya mencari seluruh DOM, anda boleh menggunakan ungkapan XPath:

<code class="python">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_')]")
    )
)</code>

Syarat Menunggu Tersuai:

Jika anda lebih suka mencipta sendiri keadaan menunggu, anda boleh mentakrifkan subkelas webdriver.support.ui.ExpectedCondition:

<code class="python">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</code>
<code class="python">WebDriverWait(driver, 30).until(MoreThanOne('li'))</code>

Pencegahan Kehilangan Unsur dalam DOM:

Untuk mengelakkan kehilangan elemen semasa selepas operasi cari, simpannya dalam pembolehubah sebelum melakukan penantian:

<code class="python">element = driver.find_element_by_css_selector('ul')
WebDriverWait(element, 30).until(MoreThanOne('li'))</code>

Kesimpulan:

Teknik ini menyediakan cara yang fleksibel dan mantap untuk menunggu pemuatan berbilang elemen dalam Selenium. Bergantung pada keperluan anda, pilih pendekatan yang paling sesuai dengan kes penggunaan anda.

Atas ialah kandungan terperinci Bagaimana untuk Memastikan Pelbagai Elemen Dimuatkan dalam Python Selenium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn