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

Python Selenium如何获取元素文本值?无固定ID元素定位及报错解决

报错原因拆解

  • 第一个'list' object has no attribute 'text'错误:调用find_elements_*系列方法返回的是符合条件的元素列表,列表本身没有text属性,必须先取出列表中对应位置的元素,再调用text属性。
  • 第二个'str' object has no attribute 'find_elements_by_tag_name'错误:你在获取元素的语句末尾直接加了.text,导致变量存储的是字符串类型的文本值,不是WebElement对象,自然无法调用元素查找方法。
  • 你当前代码第二个值输出为空:是因为XPath定位规则没有匹配到secret对应的td节点,Reddit偏好应用页的secret字段需要通过前置的label定位。

正确实现方案

前置依赖

建议用显式等待避免元素未加载导致的定位失败,先导入对应模块:

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

元素定位代码

# 初始化10秒显式等待
wait = WebDriverWait(browser, 10)

# 1. 获取app id(h3标签下的应用ID,多应用可自行调整索引)
app_id = wait.until(EC.presence_of_all_elements_located((By.TAG_NAME, "h3")))[1].text
print("app id:", app_id)

# 2. 获取secret密钥:定位文本为secret的th节点,取相邻td节点的文本
secret = wait.until(EC.presence_of_element_located(
    (By.XPATH, "//th[text()='secret']/following-sibling::td[1]")
)).text
print("api密钥:", secret)

注意事项

  • 如果页面有多个创建好的应用,调整h3元素的索引值即可,索引从0开始计数。
  • 若后续还需要操作对应元素,不要在获取WebElement的语句末尾直接加.text,先存储WebElement对象,需要取值时再调用.text属性即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 07:15:03