网络无障碍检查 – 错误和警告

如何检查网站的无障碍性

检查网站的可访问性是指确保包括残障人士在内的所有人都能使用您的网站或应用程序。这就需要根据 WCAG等指南来测试您的内容,这些指南概述了如何使数字体验更具包容性。使用 Aspose.HTML for Java,您可以通过扫描 HTML 和 CSS 以发现可访问性问题来自动完成这一过程,既可以对照 WCAG 全套标准,也可以专注于特定标准。

在本文中,您将学习如何使用 com.aspose.html.accessibilitycom.aspose.html.accessibility.results 包中的类和方法来评估网站的可访问性是否符合 WCAG 标准。我们将探索各种类和接口,它们有助于在检查网站的可访问性时收集错误和警告信息。我们将特别关注报告错误的失败标准和方法,并通过一个 Java 示例来演示如何在验证 HTML 文档后检索网络可访问性错误。

让我们来看看与网页可访问性验证相关的代码片段。下面的代码使用所有 WCAG 验证规则检查远程 HTML 页面的可访问性,并打印未成功满足的任何规则的详细信息:

  1. 使用 WebAccessibility() 构造函数创建一个负责网络可访问性验证的 WebAccessibility 类实例。
  2. 调用 createValidator() 方法创建验证器对象。
  3. 使用 HTMLDocument(Url) 构造函数加载 HTML 页面。
  4. 使用 validate(document) 方法检查网页的可访问性。结果存储在 validationResult 变量中。
  5. 检查验证是否成功。对于每个可访问性问题,打印有关规则代码、规则描述以及验证成功或失败的信息。
 1// Check website for WCAG compliance in Java
 2
 3// Initialize webAccessibility container
 4WebAccessibility webAccessibility = new WebAccessibility();
 5
 6// Create an accessibility validator with static instance
 7// for all rules from repository that match the builder settings
 8AccessibilityValidator validator = webAccessibility.createValidator(ValidationBuilder.getAll());
 9
10// Initialize an HTMLDocument object
11final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/generators/video/");
12ValidationResult validationResult = validator.validate(document);
13
14// Checking for success
15if (!validationResult.getSuccess()) {
16    // Get a list of Details
17    for (RuleValidationResult detail : validationResult.getDetails()) {
18        System.out.println(String.format("%s: %s = %s",
19                detail.getRule().getCode(),
20                detail.getRule().getDescription(),
21                detail.getSuccess()
22        ));
23    }
24}

错误和警告

检测错误有助于识别可能妨碍残障人士有效使用网络内容并与之互动的障碍。错误和警告可为改善网络无障碍提供指导。它们是开发人员和设计人员进行必要修改的路线图。

IError

IError 是一个包含验证错误信息的公共接口。这意味着错误的检查,即规则未通过,其结果与无障碍访问不匹配。

IError 接口描述了在可访问性检查过程中遇到的验证问题的细节。它提供了有关错误的关键信息,包括通过 getErrorMessage() 获得的人可读信息、通过 getSuccess() 获得的结果状态,以及错误类型的数值(getErrorType())和描述性名称(getErrorTypeName()),如 ErrorWarning。此外,getTarget() 还会返回出现问题的特定 HTML 或 CSS 元素,以便准确识别和纠正可访问性问题。该界面对于有效解释和报告辅助功能检查结果至关重要。

IError 对象就有这样的含义:

* ErrorType = 1 and Success = false – this means that the error is critical, and the result of the check is not performed.
* ErrorType = 2 and Success = true – this means that the error is not critical but has an informational character and displays hints for possible improvement. 

错误类型由技术类型决定:

Target

Target 类表示在验证过程中检测到可访问性错误或警告的特定 HTML 或 CSS 元素。它提供两个关键属性:Item"(返回导致问题的实际对象(如 HTML 标记或 CSS 规则))和 “TargetType”(确定问题源是 HTML 元素还是 CSS 组件)。

TargetTypes

TargetTypes 枚举定义了 HTML 文档中可能出现辅助功能错误或警告的对象类型。它有助于对问题源进行分类,使问题更容易识别和解决。该枚举包含三个值:

NameValueDescription
HTMLElement0The element containing the HTMLElement from a document: standard HTML elements such as <img> or <button>.
CSSStyleRule1The element containing the CSSStyleRule from a document: specific CSS rules in stylesheets.
CSSStyleSheet2The element containing the CSSStyleSheet from a document: entire CSS stylesheets.

该枚举与 Target 类配合使用,可准确指出导致验证结果的元素类型。

生成完整的无障碍报告

让我们来看看遍历网络可访问性检查结果的 Java 代码,尤其要注意失败标准和报告错误的方法的细节。获取 HTML 文档错误细节和元素的示例:

  1. 使用 RuleValidationResult 类并遍历 validationResult.getDetails() 中包含的 ruleResult 对象。这些对象代表不同的可访问性标准。
  2. 打印标准的代码和说明以及是否成功。为此,请使用 IRule 接口的 CodeDescription 属性。
  3. 使用 getSuccess() 方法检查标准。
  4. 使用包含在 ruleResult.getErrors() 中的 ITechniqueResult 对象 – ruleDetail。ITechniqueResult 对象代表报告错误的标准的各个规则结果。
  5. 打印方法的相关信息,包括方法代码、成功状态和说明。
  6. 使用 IError 属性从 ruleDetail 中获取 error 对象。ruleDetail 代表一个特定的可访问性问题,而 error 对象则包含有关该问题的信息。
  7. 使用 getTarget() 检索与错误相关的 target 对象。target “对象通常代表引发可访问性错误的特定 HTML 元素、CSS 规则或其他内容。
  8. 打印错误信息。其中包括错误类型 error.getErrorTypeName() 和错误信息 error.getErrorMessage()
  9. 使用目标类的 getTargetType() 方法检查目标对象的类型。根据目标对象的类型,将提取特定信息并打印到控制台。
 1// Check HTML for WCAG compliance and output failed rule codes and error messages
 2
 3// Initialize a webAccessibility container
 4WebAccessibility webAccessibility = new WebAccessibility();
 5
 6// Create an accessibility validator with static instance
 7// for all rules from repository that match the builder settings
 8AccessibilityValidator validator = webAccessibility.createValidator(ValidationBuilder.getAll());
 9
10String documentPath = "input.html";
11
12// Initialize an object of the HTMLDocument class
13final HTMLDocument document = new HTMLDocument(documentPath);
14ValidationResult validationResult = validator.validate(document);
15
16for (RuleValidationResult ruleResult : validationResult.getDetails()) {
17    //  list only unsuccessful rule
18    if (!ruleResult.getSuccess()) {
19        // print the code and description of the rule
20        System.out.println(String.format("%s: %s = %s",
21                ruleResult.getRule().getCode(),
22                ruleResult.getRule().getDescription(),
23                ruleResult.getSuccess()
24        ));
25
26        // print the results of methods with errors
27        for (ITechniqueResult ruleDetail : ruleResult.getErrors()) {
28            // print the code and description of the method
29            StringBuilder str = new StringBuilder(String.format("\n{0}: {1} - {2}",
30                    ruleDetail.getRule().getCode(),
31                    ruleDetail.getSuccess(),
32                    ruleDetail.getRule().getDescription()
33            ));
34            // get an error object
35            IError error = ruleDetail.getError();
36            // get a target object
37            Target target = error.getTarget();
38            // get error type and message
39            str.append(String.format("\n\n\t%s : %s",
40                    error.getErrorTypeName(),
41                    error.getErrorMessage()
42            ));
43
44            if (target != null) {
45                // Checking the type of the contained object for casting and working with it
46                if (target.getTargetType() == TargetTypes.CSSStyleRule) {
47                    ICSSStyleRule cssRule = (ICSSStyleRule) target.getItem();
48                    str.append(String.format("\n\n\t%s",
49                            cssRule.getCSSText()
50                    ));
51                }
52                if (ruleDetail.getError().getTarget().getTargetType() == TargetTypes.CSSStyleSheet) {
53                    str.append(String.format("\n\n\t%s",
54                            ((ICSSStyleSheet) target.getItem()).getTitle()
55                    ));
56                }
57                if (ruleDetail.getError().getTarget().getTargetType() == TargetTypes.HTMLElement) {
58                    str.append(String.format("\n\n\t%s",
59                            ((HTMLElement) target.getItem()).getOuterHTML()
60                    ));
61                }
62            }
63            System.out.println(str);
64        }
65    }
66}

对于每个失败的标准,代码都会列出规则描述、失败方法、错误信息,并突出显示发现问题的 HTML 或 CSS 元素。这种方法非常适合生成完整、准确的可访问性报告,包括错误上下文和开发人员的技术诊断。

另见

  • 您可以在 无障碍色彩对比度 一文中找到评估和改善文本可见性的有用技巧,该文章涉及使用 Aspose.HTML for Java 根据 WCAG 进行对比度检查。
  • 有关检查网页内容是否与屏幕阅读器兼容的说明,请参阅文章 屏幕阅读器可访问性。您将学习如何检查alt文本和其他关键元素。
  • 如果您想了解如何查看验证结果和识别网络可访问性问题,请参阅 验证结果一文。

Aspose.HTML 提供免费的在线 颜色对比度检查器 来检查网页设计中的对比度。该工具可就您的色彩选择是否符合可访问性标准提供反馈。

文本 “色彩对比度检查器”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.