Bagaimana untuk Memastikan Pelbagai Elemen Dimuatkan dalam Python Selenium?

DDD
Lepaskan: 2024-10-30 00:52:02
asal
771 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!