Проверка веб-доступности – Ошибки и предупреждения

Как проверить доступность веб-сайта

Проверка веб-сайта на доступность означает, что все, включая людей с ограниченными возможностями, могут пользоваться вашим сайтом или приложением. Для этого необходимо протестировать содержимое на соответствие рекомендациям WCAG, в которых описано, как сделать цифровой опыт более инклюзивным. Используя Aspose.HTML for Java, вы можете автоматизировать этот процесс, проверив HTML и CSS на наличие проблем с доступностью – либо по полному набору стандартов WCAG, либо сфокусировавшись на определенных критериях.

В этой статье вы узнаете, как оценить доступность сайта на соответствие требованиям WCAG с помощью классов и методов из пакетов com.aspose.html.accessibility и com.aspose.html.accessibility.results. Мы рассмотрим различные классы и интерфейсы, которые помогают собирать информацию об ошибках и предупреждениях при проверке доступности сайта. Особое внимание будет уделено критериям отказа и методам сообщения об ошибках, а также Java-примеру, демонстрирующему получение информации об ошибках доступности веб-сайта после проверки HTML-документа.

Давайте посмотрим фрагмент кода, связанный с проверкой веб-доступности. Следующий код проверяет доступность удаленной HTML-страницы с использованием всех правил валидации WCAG и выводит подробную информацию о правилах, которые не были успешно выполнены:

  1. Используйте конструктор WebAccessibility(), чтобы создать экземпляр класса WebAccessibility, отвечающего за проверку доступности веб-страниц.
  2. Вызовите метод createValidator(), чтобы создать объект валидатора.
  3. Загрузите HTML-страницу с помощью конструктора HTMLDocument(Url).
  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 – это публичный интерфейс, содержащий информацию об ошибке валидации. Это означает, что проверка была ошибочной, т. е. правило не было пройдено – и ее результат не соответствует Accessibility.

Интерфейс IError описывает детали проблемы валидации, возникшей при проверке доступности. Он предоставляет ключевую информацию об ошибке, включая человекочитаемое сообщение с помощью getErrorMessage(), статус результата с помощью getSuccess(), а также тип ошибки в виде числового значения (getErrorType()) и описательного имени (getErrorTypeName()), например, Error или Warning. Кроме того, 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 и пройдитесь по объектам ruleResult, содержащимся в validationResult.getDetails(). Они представляют различные критерии доступности.
  2. Выведите код и описание критерия, а также информацию о том, был ли он успешным или нет. Для этого используйте методы getCode() и getDescription() интерфейса IRule.
  3. Для проверки критерия используйте getSuccess().
  4. Используйте объекты ITechniqueResultruleDetail, содержащиеся в ruleResult.getErrors(). Объекты ITechniqueResult представляют отдельные результаты правил для критерия, в котором были обнаружены ошибки.
  5. Выведите информацию о методе, включая код метода, статус успеха и описание.
  6. Используйте свойство IError, чтобы получить объект error из ruleDetail. Объект ruleDetail представляет конкретную проблему доступности, а объект error содержит информацию об этой проблеме.
  7. Используйте метод getTarget(), чтобы получить объект target, связанный с ошибкой. Объект target обычно представляет конкретный элемент HTML, правило CSS или другое содержимое, вызвавшее ошибку доступности.
  8. Выведите информацию об ошибке. Она включает тип ошибки error.getErrorTypeName() и сообщение об ошибке error.getErrorMessage().
  9. Используйте свойство TargetType класса Target, чтобы проверить тип целевого объекта. В зависимости от типа целевого объекта извлекается определенная информация и выводится на консоль.
 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, в котором была обнаружена проблема. Такой подход идеально подходит для создания полного и точного отчета о доступности, включая контекст ошибки и техническую диагностику для разработчиков.

Смотрите также

  • Полезные советы по оценке и улучшению видимости текста вы найдете в статье Доступность цветового контраста, в которой рассматривается проверка контрастности на основе WCAG с использованием Aspose.HTML for Java.
  • Инструкции по проверке совместимости веб-контента с программами чтения с экрана вы найдете в статье Доступность программ чтения с экрана. Вы узнаете, как проверить альтернативный текст и другие ключевые элементы.
  • Если вы хотите узнать, как просматривать результаты проверки и выявлять проблемы веб-доступности, обратитесь к статье Результаты проверки.

Aspose.HTML предлагает бесплатную онлайн Проверку цветового контраста для оценки коэффициентов контрастности в ваших веб-дизайнах. Этот инструмент позволяет узнать, соответствуют ли выбранные вами цвета стандартам доступности.

Текст “Проверка цветового контраста”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.