aDesigner的accessibility check XML报告怎么看

aDesigner 不支持生成 XML 无障碍报告,所谓 XML 报告实为 axe-core、WAVE CLI 等第三方工具扫描其导出 HTML 所产生;其输出缺语义属性,需手动补全 aria-label、label、键盘导航等。

aDesigner 并不原生提供 XML 格式的无障碍检查报告——这是个常见误解。你看到的所谓“XML 报告”,极大概率是某款第三方无障碍扫描工具(如 axe-core、WAVE CLI、or HTML_CodeSniffer)导出的 XML 结果,被误认为是 aDesigner 自带功能。目前所有公开资料与官方文档(截至 2025 年底)均未表明 aDesigner 具备生成或解析 XML 无障碍报告的能力。

下面直接说清楚怎么查、怎么看、为什么容易看错:

确认报告来源:先查清是不是 aDesigner 生成的

很多团队用 aDesigner 做 UI 快速原型,再把导出的 HTML 丢进其他工具做合规扫描——这时 XML 报告实际来自 axe-clipa11y。判断依据很直接:

  • 打开 XML 文件,搜索 wave-api 等根节点名,基本能锁定工具
  • aDesigner 导出的 HTML 默认不含 rolearia- 属性,也无自动 关联逻辑,所以如果 XML 报告里大量报 label missingaria-label required,恰恰说明它测的是 aDesigner 输出的“原始稿”,而非 aDesigner 自己在分析
  • 检查生成命令:若执行过类似 axe https://localhost:3000 --reporter=xml > report.xml,那和 aDesigner 没半毛钱关系

XML 报告核心字段解读(以 axe-core XML 为例)

主流无障碍工具导出的 XML 都遵循类似结构。别被嵌套吓到,盯住这三处就够了:

  • 下的 id:对应 WCAG 准则,如 label 表示 WCAG 1.3.1color-contrast 对应 1.4.3
  • 里的 target:CSS 选择器路径,例如 ["#search-input"],直接定位到 HTML 中出问题的元素
  • 内容:不是“建议”,而是明确缺陷描述,如 Form element does not have a name available to an accessibility API —— 这就是在说 缺少 namearia-label

  Ensures every form element has a label
  
    
      ["#email-field"]
      Form element does not have a programmatically associated label
    
  

为什么 aDesigner 用户特别容易在这卡住

因为 aDesigner 生成的界面代码天生缺语义支撑:

  • 所有控件靠 place(x=, y=) 绝对定位,XML 报告里会密集出现 focusable element not included in keyboard navigation order 类错误
  • 按钮/输入框默认无 aria-label、无 for/id 配对,label 规则失败率接近 100%
  • 颜色对比度检测(color-contrast)常报红——aDesigner 默认主题色未按 WCAG AAA 级(4.5:1)校验,但 XML 不告诉你该调哪个变量,只标出 Submit

下一步该做什么

拿到 XML 后别急着改代码。先做两件事:

  • 用浏览器打开对应 URL,用 Accessibility Insights for Web 插件点选报错元素,它会高亮真实 DOM 并给出修复建议(比如“添加 ”)
  • 把 XML 里所有 提取出来,批量 grep 你的 HTML 源码,确认这些元素是否真由 aDesigner 导出——如果是,就得手动补语义,不能指望重装 aDesigner 解决
  • 注意:XML 里的行号(line 属性)对 aDesigner 无效,因为它导出的是扁平 HTML,没有原始 Python/Tkinter 行号映射
真正麻烦的从来不是看懂 XML,而是意识到:aDesigner 是设计加速器,不是无障碍合规器。它的输出只是起点,所有 aria-label、键盘导航顺序、焦点管理,都得你一一手动注入。