Bagaimana Menunggu Pelbagai Elemen untuk Dimuatkan Menggunakan Selenium dalam Python?

Barbara Streisand
Lepaskan: 2024-11-02 22:45:30
asal
918 orang telah melayarinya

How to Wait for Multiple Elements to Load Using Selenium in Python?

Cara Menunggu Pelbagai Elemen Dimuatkan Menggunakan Selenium dalam Python

Apabila bekerja dengan elemen web dinamik yang dimuatkan secara tidak segerak melalui AJAX, ia menjadi penting untuk memastikan elemen dimuatkan sepenuhnya sebelum melakukan sebarang tindakan ke atasnya. Artikel ini menyediakan beberapa kaedah untuk menunggu beberapa elemen dimuatkan menggunakan Selenium dalam Python.

Menggunakan WebDriverWait dengan Keadaan Tersuai

Satu pendekatan melibatkan mewujudkan keadaan menunggu tersuai menggunakan Kelas WebDriverWait. Dalam keadaan ini, anda menyemak sama ada bilangan elemen yang sepadan dengan pemilih tertentu melebihi ambang yang ditentukan. Contohnya:

<code class="python">from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

def wait_for_multiple_elements(driver, selector, min_count):
    """
    Wait for a minimum number of elements to load.
    Args:
        driver (WebDriver): Selenium WebDriver instance.
        selector (str): CSS selector for the elements.
        min_count (int): Minimum number of elements to wait for.
    """
    def custom_condition(d):
        elements = d.find_elements(By.CSS_SELECTOR, selector)
        return len(elements) >= min_count

    return WebDriverWait(driver, 30).until(custom_condition)</code>
Salin selepas log masuk

Menggunakan WebDriverWait dengan Visibility_of_All_Elements_Located

Pendekatan ini menggunakan visibility_of_all_elements_located() terbina dalam keadaan yang dijangkakan untuk menunggu sehingga semua elemen padanan ditentukan nampak. Contohnya:

<code class="python">from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

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

Menggunakan Fungsi Lambda

Jika anda perlu menunggu bilangan elemen tertentu untuk dimuatkan, anda boleh menggunakan fungsi lambda dengan WebDriverWait. Contohnya, untuk menunggu 10 elemen:

<code class="python">WebDriverWait(driver, 20).until(
    lambda driver: len(driver.find_elements_by_xpath("//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")) == 10
)</code>
Salin selepas log masuk

Menunggu Elemen Kanak-kanak

Untuk menunggu elemen anak unsur induk tertentu, anda boleh menggunakan .find_element_by_... kaedah pada elemen induk dan kemudian gunakan teknik menunggu di atas pada elemen anak.

Rujukan

  • [ Dokumentasi Selenium Python](https://selenium-python.readthedocs.io/waits.html)
  • [Cara Menunggu Bilangan Elemen Tertentu untuk Dimuatkan Menggunakan Selenium dan Python](https://stackoverflow .com/questions/58851190/cara-menunggu-jumlah-elemen-untuk-dimuat-menggunakan-selenium-dan-python)

Atas ialah kandungan terperinci Bagaimana Menunggu Pelbagai Elemen untuk Dimuatkan Menggunakan Selenium dalam Python?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan