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

Contents
[ Hide Show ]

Aspose.HTML for .NET предоставляет пространство имен Aspose.Html.Accessibility, которое предназначено для всех манипуляций и проверок, связанных с веб-доступностью. В этой статье будут рассмотрены классы и интерфейсы, которые помогают собирать информацию об ошибках и предупреждениях при проверке доступности веб-сайта на соответствие требованиям WCAG. Мы уделим особое внимание критериям сбоев и методам, которые сообщают об ошибках, и рассмотрим пример C# получения ошибок веб-доступности после проверки HTML-документа.

Как использовать класс AccessibilityValidator для проверки веб-доступности вы можете узнать из статьи Accessibility Validator – Проверка доступности веб-сайта на C#.

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

IError

IError – это общедоступный интерфейс, содержащий информацию об ошибке проверки. Это означает ошибочную проверку, т. е. правило не было пройдено – и его результат не соответствует Accessibility.

PropertyDescription
ErrorMessageReturns a string message of the error or warning.
TargetReturns an HTML or CSS element where the error was found. The returned object is of type Target.
ErrorTypeNameDescription of the presentation of the error object. It has two options “Error” or “Warning”.
ErrorTypeReturns error type numeric value.
SuccessResult of this object.

Объект IError имеет такие значения:

* ErrorType = 1 and Success = false – это означает, что ошибка критическая и результат проверки не выполнен.
* ErrorType = 2 and Success = true – это означает, что ошибка не критична, а носит информационный характер, отображает подсказки по возможному улучшению.

Тип ошибки определяется типом оборудования; если техника достаточна, то ErrorType = 1, и это Error; в противном случае ErrorType = 2 – предупреждение.

Target

Target – это общедоступный класс, который содержит элемент HTML или CSS документа, в котором была обнаружена ошибка.

PropertyDescription
ItemReturns Object of html or css element.
TargetTypeReturns the type of the contained object. Object type of TargetTypes.

TargetTypes

Перечисление TargetTypes типов элементов из HTML-документа, содержащего ошибку:

ValueDescription
HTMLElementThe element containing the HTMLElement from document.
CSSStyleRuleThe element containing the CSSStyleRule from document.
CSSStyleSheetThe element containing the CSSStyleSheet from document.

Давайте посмотрим на код C# для перебора результатов проверки веб-доступности, уделив особое внимание критериям сбоя и деталям методов, сообщающих об ошибках. Пример получения сведений об ошибках и элементов HTML-документа:

  1. Используйте класс RuleValidationResult и перебирайте объекты RuleResult, содержащиеся в ValidationResult.Details. Они представляют собой разные критерии доступности.
  2. Распечатайте код и описание критерия и укажите, был ли он успешным или нет. Для этого используйте свойства Code и Description интерфейса IRule.
  3. Используйте свойство Success, чтобы проверить критерии.
  4. Используйте объекты ITechniqueResultresult, содержащийся в ruleResult.Errors. Объекты ITechniqueResult представляют результаты отдельных правил для критерия, сообщившего об ошибках.
  5. Распечатайте информацию о методе, включая код метода, статус успеха и описание.
  6. Используйте свойство IError, чтобы получить объект ошибки из результата. Результат представляет конкретную проблему доступности, а объект ошибки содержит информацию об этой проблеме.
  7. Используйте свойство Target для получения целевого объекта, связанного с ошибкой. Целевой объект обычно представляет собой конкретный элемент HTML, правило CSS или другой контент, который вызвал ошибку доступности.
  8. Распечатайте информацию об ошибке. Он включает тип ошибки (error.ErrorTypeName) и сообщение об ошибке (error.ErrorMessage).
  9. Используйте свойство TargetType класса Target, чтобы проверить тип целевого объекта. В зависимости от типа целевого объекта конкретная информация извлекается и выводится на консоль.
 1// Initialize a webAccessibility container
 2var webAccessibility = new WebAccessibility();
 3
 4// Create an accessibillity validator with static instance for all rules from repository that match the builder settings
 5var validator = webAccessibility.CreateValidator(ValidationBuilder.All);
 6
 7string documentPath = Path.Combine(DataDir, "input.html");
 8
 9// Initialize an object of the HTMLDocument class
10using (var document = new HTMLDocument(documentPath))
11{
12    // Check the document
13    ValidationResult validationResult = validator.Validate(document);
14
15    foreach (RuleValidationResult ruleResult in validationResult.Details)
16    {
17        //  list only unsuccessful rule
18        if (!ruleResult.Success)
19        {
20            // print the code and description of the rule
21            Console.WriteLine("{0}:{1} = {2}", ruleResult.Rule.Code, ruleResult.Rule.Description, ruleResult.Success);
22            // print the results of methods with errors
23            foreach (ITechniqueResult ruleDetail in ruleResult.Errors)
24            {
25                // print the code and description of the method
26                StringBuilder str = new StringBuilder(string.Format("\n{0}: {1} - {2}",
27                                                           ruleDetail.Rule.Code, ruleDetail.Success,
28                                                           ruleDetail.Rule.Description));
29                // get an error object 
30                var error = ruleDetail.Error;
31                // get a target object 
32                var target = error.Target;
33                // get error type and message 
34                str.AppendFormat("\n\n\t{0} : {1}", error.ErrorTypeName, error.ErrorMessage);
35                if (target != null)
36                {
37                    // Checking the type of the contained object for casting and working with it
38                    if (target.TargetType == TargetTypes.CSSStyleRule)
39                    {
40                        var cssRule = (ICSSStyleRule)target.Item;
41                        str.AppendFormat("\n\n\t{0}", cssRule.CSSText);
42                    }
43                    if (ruleDetail.Error.Target.TargetType == TargetTypes.CSSStyleSheet)
44                        str.AppendFormat("\n\n\t{0}", ((ICSSStyleSheet)target.Item).Title);
45
46                    if (ruleDetail.Error.Target.TargetType == TargetTypes.HTMLElement)
47                        str.AppendFormat("\n\n\t{0}", ((HTMLElement)target.Item).OuterHTML);
48                }
49                Console.WriteLine(str.ToString());
50            }
51        }
52    }
53}
view raw Example-Errors hosted with ❤ by GitHub
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.