Escribir pruebas de Selenium

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Utilice axe DevTools Java Selenium

Esta configuración de axe DevTools no se vincula inherentemente a ninguna biblioteca de afirmaciones. Esto permite realizar pruebas de accesibilidad sencillas, así como una personalización completa de las pruebas y su uso con afirmaciones personalizadas.

Prerrequisitos

Para poder utilizar axe DevTools Java Selenium y producir resultados con él, debe haber creado previamente un archivo de prueba con axe DevTools y haber importado e inicializado el Selenium WebDriver de su elección. Si no ha completado este paso, primero lea esta guía sobre cómo hacerlo.

Ejecutar un escaneo

Con esta configuración, ejecutar un escaneo de accesibilidad básico requiere solo tres líneas de código. En su archivo de prueba, reemplace <URL> Con la dirección web deseada de la página que desea probar. Los resultados del escaneo se guardan en la results variable

webdriver.get("<URL>");
Results results = axeSelenium.run(axedriver);
webdriver.quit();

Uso de los resultados del escaneo

Una vez que haya ejecutado el análisis, es posible que desee hacer algo con los resultados. La opción más sencilla es imprimir los resultados en la consola.

System.out.print(results);

También puede utilizar los resultados para comprobar si hay violaciones de accesibilidad. La forma más sencilla de hacerlo es con una declaración como esta:

if (!results.violationFree()) { 
    //do something, like throw an exception
}

Para obtener más información sobre cómo utilizar el objeto de resultados para escribir pruebas personalizadas, consulte la página sobre uso de los resultados.

Archivo de prueba de muestra

Este archivo de prueba funciona con los mismos bloques de construcción cubiertos en importar e inicializar así como en la guía para escribir pruebas en esta página.

import com.deque.html.axedevtools.selenium.*;
import com.deque.html.axedevtools.selenium.results.*;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Example {
    public static void main(final String[] args) {
        AxeSelenium axeselenium = new AxeSelenium();
        WebDriver webdriver = new ChromeDriver();
        AxeDriver axedriver = new AxeDriver(wd);

        webdriver.get("<URL>");

        Results results = axeselenium.run(axedriver);

        webdriver.quit();

        if (!results.violationFree()) {
            int violationCount = results.getViolations().size();
            System.out.printf("Found %d violations!\n", violationCount);
            System.exit(1);
        }

        System.out.println("No violations found!");
    }
}

En este ejemplo, se utilizan Chrome y ChromeDriver. Esto se puede sustituir por cualquier otro controlador y navegador de Selenium. Si este archivo de prueba encuentra algún problema de accesibilidad, imprime la cantidad de violaciones encontradas y sale con el código de estado 1 (error). Para utilizar este archivo de prueba en su propio entorno, deberá agregar una URL a la línea

webdriver.get("<URL>");

Referencia adicional

Además del uso básico descrito anteriormente, axe DevTools Java Selenium proporciona varios métodos de encadenamiento para modificar la forma en que se ejecuta el escaneo. Estos métodos pueden modificar el alcance del escaneo y el conjunto de reglas según cualquier configuración deseada. De forma predeterminada, se escanea toda la página y se verifica si hay violaciones de accesibilidad de acuerdo con las pautas WCAG 2.0 nivel AA. Una nota importante es que las llamadas posteriores al método de ejecución sobrescribirán cualquiera de las preferencias de los métodos de cadena a continuación. Los cambios realizados en el alcance o en las reglas no persisten en múltiples escaneos utilizando estos métodos chan.

Alcance

De forma predeterminada, se escanea toda la página. Sin embargo, axe DevTools admite la capacidad de escanear partes específicas de una página con sus métodos de encadenamiento de alcance. Estos métodos de alcance cambian efectivamente el "área de superficie" de la página que se va a escanear a las áreas objetivo deseadas. Además, está disponible un método para ignorar violaciones. "Definir el alcance de" la página con este método no reduce el área del escaneo, pero ignorará las violaciones de un tipo específico dentro del área especificada y seguirá escaneando el área en busca de otras posibles violaciones. Todos estos métodos funcionan según los selectores CSS. El área de cada selector CSS en una página determinada se puede determinar utilizando el widget "inspeccionar elemento" de las herramientas para desarrolladores de su navegador.

Métodos de determinación del alcance

Como se explicó anteriormente, estos métodos cambian efectivamente el área de superficie de la página que se va a escanear. Hay dos métodos en esta categoría, un método "inclusivo" y un método "exclusivo". Pueden encadenarse mutuamente para crear múltiples áreas aisladas y áreas excluidas de superficie de escaneo.

Alcance - Inclusión

El método de cadena de alcance de inclusión modifica el escaneo para que solo se ejecute dentro del área de página especificada por los selectores CSS que se le pasan. Hay varias formas de utilizar el método including: ámbito único, ámbito múltiple, ámbito compuesto y ámbito IFrame.

Este método se puede utilizar con un solo selector de la siguiente manera:

axeselenium.including("#selector1").run(axedriver);

Este escaneo solo se ejecutará dentro del alcance del selector 1

Puede configurar un escaneo con múltiples alcances:

axeselenium.including("#selector1").including("#selector2").run(axedriver);

Este llamado escaneará dentro del alcance del selector 1 y el selector 2. Pueden estar separados por comas o declararse en una cláusula de inclusión separada.

El alcance compuesto se puede lograr con la siguiente sintaxis:

axeselenium.including("#selector1 .selector2").run(axedriver);

Este alcance compuesto da como resultado que solo se escaneen los elementos con el selector 2 dentro del selector 1. Esto se configura al no separar los selectores con comas.

Para delimitar el alcance dentro de un IFrame, se puede pasar un List<String> . El alcance que se escaneará dentro del IFrame se pasa como parámetro adicional.

axeselenium.including(Arrays.asList(new String[] {"#frame1", "#selector1"})).run(axedriver);

Este escaneo se ejecuta en elementos dentro del selector 1, que está dentro del IFrame 1.

La definición del ámbito dentro de múltiples IFrames funciona de la misma manera que la selección múltiple estándar. Simplemente llame including de nuevo.

axeselenium.including(Arrays.asList(new String[] {"#frame1", "#selector1"}))
    .including(Arrays.asList(new String[] {"#frame2", "#selector2"})).run(axedriver);

Este escaneo se ejecuta solo dentro del selector 1 dentro del marco 1 y del selector 2 dentro del marco 2.

También es posible definir el ámbito dentro de IFrames anidados:

axeselenium.including(Arrays.asList(new String[] {"#frame1", "#frame2", "#selector1"})).run(axedriver);

Este escaneo se ejecuta dentro del ámbito del selector 1 dentro del marco 2, que a su vez está dentro del marco 1.

Alcance - Exclusión

Además del método including encadenado, esta API tiene un método de exclusión. Este método modifica el escaneo para que solo se escaneen los elementos fuera del alcance especificado. Su configuración y uso son idénticos al método including, así que consulte la sección anterior para obtener más detalles y ejemplos de cómo se puede utilizar. Un detalle importante a recordar es que los métodos including y excluding se pueden encadenar entre sí para crear ámbitos complejos de manera mucho más sencilla que utilizando solo include o exclude.

Este ejemplo muestra una forma de emparejar los métodos within y excluding:

axeselenium.including("#selector1").excluding("#selector2").run(axedriver);

Este escaneo se ejecuta solo en la parte de la página que está dentro del selector 1 que no está también dentro del selector 2.

Alcance - Ignorar infracciones

El último método en cadena relacionado con la definición del ámbito es el método de ignorar resultados. Este método no altera el alcance general del escaneo, pero ignorará las violaciones de un tipo específico dentro de un alcance específico. Funciona pasando los selectores de los elementos que desea ignorar como un arreglo, junto con la regla que violan.

axeselenium.ignoring("[\".sidebar\", \"#branded-content\"]", "color-contrast").run(axedriver);

Este escaneo ignorará las violaciones de contraste de color dentro de la sección de la barra lateral y la sección de contenido de marca.

Reglas

Hay tres formas de modificar la configuración de reglas para cada escaneo. Estos diferentes métodos permiten diferentes niveles de granularidad al seleccionar reglas para realizar pruebas. El método de conjunto de reglas de menor granularidad selecciona un conjunto de reglas o un grupo más grande de reglas según los estándares de accesibilidad comunes. El método de estándares de reglas con un nivel de granularidad ligeramente mayor, también conocido como etiquetas, selecciona reglas en función de en qué áreas de un estándar de accesibilidad más amplio se encuentran. Finalmente, hay tres opciones de configuración con una regla a la vez. En conjunto, estos métodos de cadena le permiten ajustar su escaneo para ejecutar con precisión las reglas que desea.

Para obtener información sobre las reglas de axe-core, visita la página de descripción general del conjunto de reglas.

Selección del conjunto de reglas

Este método selecciona reglas por su asociación más agregada: un conjunto de reglas. Un conjunto de reglas es una colección de todas las reglas que pertenecen a un estándar de accesibilidad de toda la industria. Conjuntos de reglas para WCAG 2.0, 2.1 y 2.2; ADA Sección 508; Trusted Tester v5; y EN 301 549. Además, las reglas de mejores prácticas se pueden habilitar con un indicador booleano.

Los conjuntos de reglas a menudo se componen de varias etiquetas, que son reglas agrupadas por distinciones más específicas. Por ejemplo, el conjunto de reglas contiene todas las reglas etiquetadas como wcag2 reglas WCAG 2.0 nivel A, wcag2a reglas WCAG 2.0 nivel AA y wcag2aa reglas WCAG 2.0 nivel AAA. wcag2aaa

Utilice esta opción cuando desee seleccionar un conjunto de reglas sin modificar.

axeselenium.forRuleset("wcag2.1").run(axedriver);

Este escaneo se ejecutará únicamente con reglas WCAG 2.1.

Para habilitar las reglas de mejores prácticas, utilice la segunda forma de forRuleset.

axeselenium.forRuleset("wcag2.1", true).run(axedriver);

Selección estándar

El método de cadena o la etiqueta de estándar de accesibilidad permite un poco más de granularidad dentro de los conjuntos de reglas de axe-core. Para las reglas basadas en WCAG, este método le permite seleccionar solo reglas etiquetadas como nivel A o nivel AA. Esta lista desglosa los nombres de etiquetas disponibles y sus estándares correspondientes.

Esta opción es particularmente útil cuando solo se prueba una parte específica de un conjunto de reglas, por ejemplo, solo las reglas de nivel A según WCAG 2.0.

Nombre de la etiqueta Norma de accesibilidad
wcag2a WCAG 2.0 Nivel A
wcag2aa WCAG 2.0 Nivel AA
wcag2aaa WCAG 2.0 Nivel AAA
wcag21a WCAG 2.1 Nivel A
wcag21aa WCAG 2.1 Nivel AA
wcag21aaa WCAG 2.0 Nivel AAA
wcag22a WCAG 2.2 Nivel A
wcag22aa WCAG 2.2 Nivel AA
wcag22aaa WCAG 2.2 Nivel AAA
section508 Sección 508
EN-301-549 EN 301 549
TTv5 Trusted Tester v5
best-practice Mejores prácticas avaladas por Deque

Si bien no se define explícitamente como parte de ningún estándar de accesibilidad, ofrecemos una serie de reglas que llamamos "mejores prácticas". Si bien no es estrictamente necesario, probar con estas reglas ayudará a que su sitio web sea lo más equitativo posible en su uso.

Se puede seleccionar un único estándar de la siguiente manera:

axeselenium.accordingTo("wcag2a").run(axedriver);

Este análisis se ejecutará únicamente con reglas etiquetadas según el nivel A de WCAG 2.0

Además, se pueden especificar varias etiquetas para seleccionar múltiples estándares de accesibilidad:

axeselenium.accordingTo("wcag2a", "section508").run(axedriver);

Estos escaneos ejecutarán las reglas etiquetadas bajo WCAG 2.0 nivel A y la Sección 508 de ADA.

Selección de reglas

Finalmente, puedes modificar tu conjunto de reglas mediante una sola regla. Para obtener información sobre los nombres de todas las reglas de axe-core y lo que prueba cada regla, consulte la documentación de descripciones de las reglas de axe-core.

Estos métodos funcionan bien cuando el grupo final de reglas deseado solo se diferencia de un conjunto de reglas o estándar/etiqueta existente en unas pocas reglas individuales. Para crear un conjunto de reglas completamente personalizado, consulte nuestras opciones de reglas personalizadas.

Comprobación de reglas adicionales

El método de cadena de verificación le permite agregar reglas adicionales para probar además de su conjunto de reglas estándar.

Este método se puede utilizar para comprobar una sola regla adicional:

axeselenium.checking("label").run(axedriver);

Donde el escaneo se ejecuta con el conjunto de reglas predeterminado además de la regla "label".

También se puede utilizar para comprobar varias reglas adicionales de dos maneras diferentes:

axeselenium.checking("label", "tabindex").run(axedriver);
axeselenium.checking("label").checking("tabindex").run(axedriver);

Donde el escaneo se ejecuta con el conjunto de reglas predeterminado además de las reglas "label" y "tabindex".

También se puede utilizar para agregar una o varias reglas a una etiqueta específica:

axeselenium.accordingTo("wcag2a").checking("tabindex").run(axedriver);

Donde el escaneo se ejecuta probando contra las reglas WCAG 2.0 nivel A, con el agregado de la regla "tabindex".

Saltarse reglas

De manera similar al método de verificación, el método de salto cambia las reglas predeterminadas que serán utilizadas por las reglas especificadas. Sin embargo, en lugar de agregarlo al conjunto de reglas, el método de salto elimina las reglas especificadas de las utilizadas para probar la página. Su configuración y uso son idénticos al método de verificación, así que consulte la sección anterior para obtener más detalles y ejemplos sobre cómo usarlo. Un detalle importante para recordar es que los métodos de verificación y omisión se pueden encadenar entre sí para crear conjuntos de reglas personalizados de manera mucho más sencilla que utilizando solo los métodos de verificación o de ignoración.

axeselenium.accordingTo("wcag2a").checking("tabindex").skipping("label").run(axedriver);

Este ejemplo muestra una prueba de escaneo contra las reglas de nivel A de WCAG 2.0, con la adición de la regla "tabindex" y la eliminación de la regla "label".

Comprobación solamente

El método de solo verificación verifica únicamente las reglas especificadas. Cualquier regla no especificada explícitamente no se incluirá en el escaneo.

Este método de cadena se puede utilizar para especificar una sola regla:

axeselenium.checkingOnly("tabindex").run(axedriver);

Donde el escaneo se ejecuta solo con la regla "tabindex".

También se puede utilizar para especificar más de una regla de estas dos maneras:

axeselenium.checkingOnly("label", "tabindex").run(axedriver);
axeselenium.checkingOnly("label").checkingOnly("tabindex").run(axedriver);

Donde el escaneo se ejecuta solo con las reglas "label" y "tabindex".

Deshabilitar las pruebas iframe

En páginas volátiles, los iframes pueden causar problemas. Es necesario inyectar Axe en cada iframe y Configurado de la misma manera en cada iframe. Si se agregan o eliminan iframes mientras está AxeSelenium::run Al probar su página, es posible que se produzcan excepciones o un comportamiento inesperado. Como un A prueba de fallos, AxeSelenium expone un método para deshabilitar toda interacción de iframe AxeSelenium::disableIframeTesting. Cuando está habilitado, axe-core no se inyectará en iframes en la página, ni se ejecutará en dichos iframes. Solo se comprobará la página de nivel superior.

Se puede utilizar de la siguiente manera:

axeselenium.disableIframeTesting().run(axedriver);
note

No se recomienda el uso de este método. Siempre es mejor esperar a que tu página se estabilice antes de pasarla a AxeSelenium::run.

Servicio de uso

Obtenga información sobre las tendencias de uso de axe DevTools dentro de su organización

El servicio de uso se puede configurar a través de variables de entorno o métodos en tiempo de ejecución. Cuando se utilizan ambos, se utilizan los valores de los métodos. Nota: no todos los campos de datos del servicio de uso se pueden configurar a través de métodos.

De forma predeterminada, el servicio de uso está deshabilitado y los resultados de URL predeterminados se envían a https://usage.deque.com.

Variables de entorno

Este método permite a los usuarios cambiar valores específicos del servicio de utilización a través de variables de entorno.

Variable ambiental Tipo Descripción
AXE_IS_LOGGED_IN Booleano Si el usuario ha iniciado sesión en la aplicación bajo prueba
AXE_KEYCLOAK_ID Cadena El ID de keycloak del usuario que inició sesión
AXE_USUARIO_ID Cadena El nombre del usuario que ejecuta la prueba.
AXE_SESSION_ID Cadena Descripción de la sesión de prueba
AXE_USER_STATUS Cadena El estado del usuario
AXE_USER_JOB_ROLE Cadena El título/rol del individuo que realiza la prueba
AXE_DISTINCT_ID Cadena Identificación distintiva de un usuario individual
AXE_IS_DEV_INSTANCE Booleano Si la aplicación bajo prueba está en una instancia de desarrollo
ORGANIZACIÓN_AXE Cadena La organización del usuario: organización de datos a escala de toda la empresa
APLICACIÓN AXE Cadena El nombre de la aplicación bajo prueba
AXE_METRICS_URL Cadena La URL a la que se envían los datos de uso
AXE_TRACK_USAGE Booleano Si se capturan o no datos de uso

Habilitar seguimiento

Este método permite a los usuarios optar por enviar o no datos al servicio de uso.

.enableTracking(boolean state)

Establecer URL de seguimiento

Este método permite a los usuarios cambiar a dónde se envían los datos de las métricas de uso. El valor predeterminado es https://usage.deque.com

.setTrackingUrl(String url)

Establecer ID distinto

Este método permite a los usuarios cambiar la identificación distinta que se almacena/usa.

.setDistinctId(String distinctId)

Próximos pasos

Una vez que esté escribiendo pruebas con axe DevTools, lea más sobre cómo usar los resultados para escribir pruebas personalizadas más detalladas, o lea sobre cómo usar el generador de informes para generar informes de los análisis de accesibilidad.

Solución de problemas

Si tiene problemas al configurar su prueba de accesibilidad, comuníquese directamente con su representante de Deque, contáctenos a través de nuestra mesa de soporte o envíenos un correo electrónico. Estaremos encantados de ayudarle a poner en marcha sus esfuerzos de pruebas de accesibilidad.