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-cli 或 pa11y。判断依据很直接:
- 打开 XML 文件,搜索
、或wave-api等根节点名,基本能锁定工具 -
aDesigner导出的 HTML 默认不含role、aria-属性,也无自动关联逻辑,所以如果 XML 报告里大量报label missing或aria-label required,恰恰说明它测的是 aDesigner 输出的“原始稿”,而非 aDesigner 自己在分析 - 检查生成命令:若执行过类似
axe https://localhost:3000 --reporter=xml > report.xml,那和 aDesigner 没半毛钱关系
XML 报告核心字段解读(以 axe-core XML 为例)
主流无障碍工具导出的 XML 都遵循类似结构。别被嵌套吓到,盯住这三处就够了:
-
下的id:对应 WCAG 准则,如label表示WCAG 1.3.1,color-contrast对应1.4.3 -
里的target:CSS 选择器路径,例如["#search-input"],直接定位到 HTML 中出问题的元素 -
内容:不是“建议”,而是明确缺陷描述,如Form element does not have a name available to an accessibility API—— 这就是在说缺少name或aria-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 行号映射
aria-、label、键盘导航顺序、焦点管理,都得你一一手动注入。










