You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python:如何等待元素类匹配且样式宽度为100%?

实现方法

当然可以实现,你可以通过两种方式等待进度条宽度达到100%:

方法一:直接在XPath中匹配样式属性

利用XPath的属性匹配逻辑,直接定位到宽度为100%的进度条元素,结合WebDriverWait等待元素出现:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

WebDriverWait(driver, 20).until(
    EC.presence_of_element_located(
        (By.XPATH, "//div[@class='bar' and contains(@style, 'width: 100%')]")
    )
)

注意:如果页面中进度条的style属性写法是width:100%(无空格),可以把XPath里的匹配内容改成contains(@style, 'width:100%');如果担心空格格式不统一,也可以用normalize-space处理属性值:

//div[@class='bar' and contains(normalize-space(@style), 'width: 100%')]

方法二:自定义等待条件(更可靠)

如果进度条的宽度是通过脚本动态计算、未直接写在style属性里,推荐用自定义等待逻辑,获取元素实际渲染的宽度进行判断:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

def progress_bar_complete(driver):
    progress_bar = driver.find_element(By.XPATH, "//div[@class='bar']")
    # 获取元素实际渲染的宽度值
    current_width = progress_bar.value_of_css_property('width')
    # 判断是否达到100%
    return current_width == '100%'

# 等待进度条完成
WebDriverWait(driver, 20).until(progress_bar_complete)

这种方式能避免因style属性写法差异导致的匹配失败,更适配动态渲染的进度条场景。

内容的提问来源于stack exchange,提问作者PRR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:35:13