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

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

Проверка веб-сайта на доступность означает, что все, включая людей с ограниченными возможностями, могут пользоваться вашим сайтом или приложением. Для этого необходимо протестировать содержимое на соответствие рекомендациям 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// Initialize webAccessibility container
 2WebAccessibility webAccessibility = new WebAccessibility();
 3
 4// Create an accessibility validator with static instance
 5// for all rules from repository that match the builder settings
 6AccessibilityValidator validator = webAccessibility.createValidator(ValidationBuilder.getAll());
 7
 8// Initialize an HTMLDocument object
 9final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/generators/video/");
10ValidationResult validationResult = validator.validate(document);
11
12// Checking for success
13if (!validationResult.getSuccess()) {
14    // Get a list of Details
15    for (RuleValidationResult detail : validationResult.getDetails()) {
16        System.out.println(String.format("%s: %s = %s",
17                detail.getRule().getCode(),
18                detail.getRule().getDescription(),
19                detail.getSuccess()
20        ));
21    }
22}
Example_ValidateWebsite hosted with ❤ by GitHub

Ошибки и предупреждения

Обнаружение ошибок помогает выявить барьеры, которые могут помешать людям с ограниченными возможностями эффективно использовать веб-контент и взаимодействовать с ним. Ошибки и предупреждения указывают на то, что необходимо сделать для улучшения доступности веб-сайта. Они служат для разработчиков и дизайнеров дорожной картой для внесения необходимых изменений.

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// Initialize a webAccessibility container
 2WebAccessibility webAccessibility = new WebAccessibility();
 3
 4// Create an accessibility validator with static instance
 5// for all rules from repository that match the builder settings
 6AccessibilityValidator validator = webAccessibility.createValidator(ValidationBuilder.getAll());
 7
 8String documentPath = "input.html";
 9
10// Initialize an object of the HTMLDocument class
11final HTMLDocument document = new HTMLDocument(documentPath);
12ValidationResult validationResult = validator.validate(document);
13
14for (RuleValidationResult ruleResult : validationResult.getDetails()) {
15    //  list only unsuccessful rule
16    if (!ruleResult.getSuccess()) {
17        // print the code and description of the rule
18        System.out.println(String.format("%s: %s = %s",
19                ruleResult.getRule().getCode(),
20                ruleResult.getRule().getDescription(),
21                ruleResult.getSuccess()
22        ));
23
24        // print the results of methods with errors
25        for (ITechniqueResult ruleDetail : ruleResult.getErrors()) {
26            // print the code and description of the method
27            StringBuilder str = new StringBuilder(String.format("\n{0}: {1} - {2}",
28                    ruleDetail.getRule().getCode(),
29                    ruleDetail.getSuccess(),
30                    ruleDetail.getRule().getDescription()
31            ));
32            // get an error object
33            IError error = ruleDetail.getError();
34            // get a target object
35            Target target = error.getTarget();
36            // get error type and message
37            str.append(String.format("\n\n\t%s : %s",
38                    error.getErrorTypeName(),
39                    error.getErrorMessage()
40            ));
41
42            if (target != null) {
43                // Checking the type of the contained object for casting and working with it
44                if (target.getTargetType() == TargetTypes.CSSStyleRule) {
45                    ICSSStyleRule cssRule = (ICSSStyleRule) target.getItem();
46                    str.append(String.format("\n\n\t%s",
47                            cssRule.getCSSText()
48                    ));
49                }
50                if (ruleDetail.getError().getTarget().getTargetType() == TargetTypes.CSSStyleSheet) {
51                    str.append(String.format("\n\n\t%s",
52                            ((ICSSStyleSheet) target.getItem()).getTitle()
53                    ));
54                }
55                if (ruleDetail.getError().getTarget().getTargetType() == TargetTypes.HTMLElement) {
56                    str.append(String.format("\n\n\t%s",
57                            ((HTMLElement) target.getItem()).getOuterHTML()
58                    ));
59                }
60            }
61            System.out.println(str);
62        }
63    }
64}
Example_Errors hosted with ❤ by GitHub

Для каждого неудачного критерия в коде перечисляются описания правил, неудачных методов, сообщения об ошибках и выделяется точный элемент HTML или CSS, в котором была обнаружена проблема. Такой подход идеально подходит для создания полного и точного отчета о доступности, включая контекст ошибки и техническую диагностику для разработчиков.

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

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

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

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.