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

Selenium无法识别元素data-count属性值更新该如何解决?

问题原因

你的等待条件仅判断了通知元素是否可见,未覆盖属性更新的时机:大部分场景下通知图标会优先渲染完成(此时data-count默认值为0),等后端接口返回实际通知数量后才会动态修改该属性值,属性更新操作发生在元素可见之后,因此你读取到的是未更新的初始值。

解决方案

方案1:新增属性非0的等待条件

在元素可见后追加显式等待,直到data-count属性脱离初始值0再取值,注意get_attribute返回值为字符串类型,需要和'0'做对比:

notify_element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, 'data-count')))
# 等待data-count更新为非0值
WebDriverWait(driver, 10).until(
    lambda driver: notify_element.get_attribute('data-count') != '0'
)
count_of_notify = int(notify_element.get_attribute('data-count'))

方案2:直接等待符合属性条件的元素

如果通知数量更新时会销毁重建原span节点而非直接修改属性,可直接等待符合属性要求的元素加载完成,避免拿到旧节点的缓存属性:

count_of_notify = int(WebDriverWait(driver, 20).until(
    lambda driver: (e := driver.find_element(By.CLASS_NAME, 'data-count')).get_attribute('data-count') != '0'
).get_attribute('data-count'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:02