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

Python Selenium如何获取aria-hidden属性的布尔值

错误原因与正确实现

你代码里有3个直接导致运行失败的问题:

  • XPath写法错误:浏览器渲染HTML表格时,会自动为<table>标签补全<tbody>子节点,你写的//*[@id="prefs"]/tr是匹配id=prefs节点的直接子元素tr,但实际tr是tbody的子元素,和table标签隔了一层,自然匹配不到。另外写/html/body开头的绝对XPath容错率极差,页面DOM稍有变动就会失效,不推荐使用。
  • 方法调用错误:Selenium的Python API不存在get_text()方法,这是BeautifulSoup等静态解析库的方法,Selenium取元素可见文本用的是.text属性。
  • 取值逻辑错误:你要获取的aria-hidden是HTML标签的属性,不是标签包裹的文本内容,哪怕元素定位成功、用对了取文本的方法,也拿不到这个属性的值,取属性必须调用.get_attribute()方法。

正确代码

基础写法(适配旧版Selenium)

# XPath里用//tr跳过中间层级,不用硬写tbody,兼容性更好
target_element = driver.find_element_by_xpath('//*[@id="prefs"]//tr/td[1]/span/span')
# 取aria-hidden属性值,默认返回字符串格式的'true'/'false'
aria_hidden_str = target_element.get_attribute('aria-hidden')
# 需要布尔值的话自行转换即可
aria_hidden_bool = aria_hidden_str.lower() == 'true'

稳妥写法(适配新版Selenium,带显式等待)

新版Selenium已经废弃了find_element_by_*系列方法,推荐用统一的find_element写法,加上显式等待可以避免页面未加载完成导致的定位失败:

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(driver, 10)
# 等待元素加载到DOM树后再定位
target_element = wait.until(EC.presence_of_element_located(
    (By.XPATH, '//*[@id="prefs"]//tr/td[1]/span/span')
))
aria_hidden_str = target_element.get_attribute('aria-hidden')
aria_hidden_bool = aria_hidden_str.lower() == 'true'

如果按上面写法还是定位不到,优先检查目标元素是否嵌套在iframe中,若存在iframe需要先调用driver.switch_to.frame()切入对应框架再定位元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:01:46