如何确保 Python Selenium 中加载多个元素?

DDD
发布: 2024-10-30 00:52:02
原创
771 人浏览过

How to Ensure Multiple Elements Load in Python Selenium?

Python Selenium:确保​​多个元素加载

通过 AJAX 处理动态加载的元素时,确认其外观可能很困难。为了处理这种情况,我们将利用 Selenium 的 WebDriverWait 及其各种策略来确保多个元素的存在。

所有元素的可见性:

验证所有与特定选择器匹配的元素,我们可以使用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>
登录后复制

等待特定数量的元素:

如果需要等待对于要加载的特定数量的元素,您可以将 lambda 函数与 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!