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

Selenium获取含固定属性div元素文本失败的求助

解决方法:抓取带固定data-v属性的div文本

原代码问题分析

  1. 绝对XPATH太脆弱:你用的/html/body/...这种绝对路径,只要页面结构有一点变化(比如新增/删除一个层级),定位就会失效。
  2. 列表不能直接调用.text:presence_of_all_elements_located返回的是元素列表,直接.text会抛出错误,必须遍历列表或者定位单个元素。
  3. 可能元素未完全渲染:presence_of_all_elements_located只判断元素在DOM中存在,不保证可见,用visibility_of_element_located更适合需要获取文本的场景。

可行方案

方案1:批量获取所有目标div的文本

利用固定的data-v-a5b90146属性结合class,用CSS选择器定位更精准:

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

# 等待所有符合条件的div加载并可见
div_list = WebDriverWait(driver, 10).until(
    EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'div[data-v-a5b90146].html-content'))
)

# 遍历提取每个div的文本
for div in div_list:
    print(div.text.strip())  # 去除多余空格

方案2:精准定位带标签的目标文本

如果只需要抓取<b> TEXT WANTED </b>这段内容,用相对XPATH结合属性定位:

target_text = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, '//div[@data-v-a5b90146 and @class="html-content"]/b'))
).text.strip()

print(target_text)

额外提示

  • 优先用CSS选择器或相对XPATH,避免绝对路径,提升代码稳定性。
  • 如果文本在iframe里,需要先切换到iframe再定位元素。
  • 检查元素是否被隐藏(比如display:none),这种情况visibility_of_element_located会超时,需要用presence_of_element_located再判断文本是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:25:38