> 백엔드 개발 > 파이썬 튜토리얼 > Python Selenium에서 여러 요소가 로드되도록 하는 방법은 무엇입니까?

Python Selenium에서 여러 요소가 로드되도록 하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-30 00:52:02
원래의
843명이 탐색했습니다.

How to Ensure Multiple Elements Load in Python Selenium?

Python Selenium: 여러 요소 로드 보장

AJAX를 통해 동적으로 로드된 요소를 처리할 때 해당 요소의 모양을 확인하는 것이 어려울 수 있습니다. 이 시나리오를 처리하기 위해 Selenium의 WebDriverWait 및 다양한 전략을 활용하여 여러 요소의 존재를 확인합니다.

모든 요소의 가시성:

특정 선택기와 일치하는 모든 요소는 visible_of_all_elements_location() 조건을 사용할 수 있습니다:

<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>
로그인 후 복사

특정 요소 수를 기다리는 중:

기다려야 하는 경우 특정 수의 요소를 로드하려면 ExpectedConditions 클래스와 함께 람다 함수를 사용할 수 있습니다.

<code class="python">WebDriverWait(driver, 20).until(
    lambda driver: len(driver.find_elements_by_xpath(selector)) > int(myLength)
)</code>
로그인 후 복사

하위 요소에 대한 XPath:

하위 요소를 기다리려면 전체 DOM을 검색하는 대신 상위 요소 내의 요소를 사용할 수 있습니다. 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>
로그인 후 복사

사용자 정의 대기 조건:

자신만의 대기 조건을 만들고 싶은 경우 대기 조건에서는 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>
로그인 후 복사

DOM에서 요소 손실 방지:

피하려면 찾기 작업 후 현재 요소를 잃으면 대기를 수행하기 전에 변수에 저장하세요.

<code class="python">element = driver.find_element_by_css_selector('ul')
WebDriverWait(element, 30).until(MoreThanOne('li'))</code>
로그인 후 복사

결론:

이러한 기술은 유연하고 강력한 방법을 제공합니다. Selenium에 여러 요소가 로드될 때까지 기다립니다. 요구 사항에 따라 사용 사례에 가장 적합한 접근 방식을 선택하세요.

위 내용은 Python Selenium에서 여러 요소가 로드되도록 하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿