Schreiben Sie Hamcrest-Tests

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

Verwenden von Hamcrest Matchers mit axe DevTools

Voraussetzungen

Um Barrierefreiheitstests zu schreiben und Ergebnisse zu erzielen, müssen Sie bereits eine Testdatei mit axe DevTools erstellt und den Selenium WebDriver Ihrer Wahl vorimportiert und vorinitialisiert haben. Wenn Sie dies noch nicht getan haben, lesen Sie diese Anleitung , um zu erfahren, wie es geht.

Für den Barrierefreiheitstest durch Hamcrest unter Verwendung von Selenium WebDriver wurde eine Reihe von Matchern bereitgestellt. Diese Matcher können in einem Unit-Test-Framework oder in benutzerdefinierten Cucumber-Schritten verwendet werden.

Auswählen einer Scanmethode

Wie aus den Importanweisungen hervorgeht, gibt es zwei Methoden zum Scannen der Zugänglichkeit. Das erste, isAxeClean, löst eine Ausnahme aus und stoppt die Tests, wenn Verstöße gefunden werden. Die zweite Option, isAuditedForAccessibility, beendet die Tests nicht und löst keine Ausnahme aus, unabhängig von der Barrierefreiheit der gescannten Seite.

Tests schreiben

In den verbleibenden Beispielen wird der Kürze halber die Methode isAxeClean angezeigt, beide Methoden funktionieren jedoch austauschweise. Wenn Ihre WebDriver- und AxeDriver-Objekte instanziiert und initialisiert sind, ist das Erstellen eines Scans so einfach wie das Hinzufügen dieser beiden Codezeilen zu einer Testmethode. Ersetzen Sie $URL durch die gewünschte URL der Seite, die Sie scannen möchten.

webDriver.get("$URL");
assertThat(axedriver, isAxeClean());

Wenn Sie mehrere Seiten testen, können Sie den Abruf- und Scanvorgang wiederholen, ohne neue Instanzen der Treiber erstellen zu müssen. Um verschiedene Zustände einer Seite zu scannen, können Sie die Seite mithilfe der Webdriver-API bearbeiten und dann einen neuen Scan ausführen.

Weitere Referenzen

Um die Art und Weise des Seitenscannens zu ändern, stehen mehrere Verkettungsfunktionen zur Verfügung. Zu diesen Methoden gehören Ausschluss-/Einschlussklauseln oder die Festlegung und Änderung von Barrierefreiheitsstandards, Barrierefreiheitsregeln und Barrierefreiheitsregelsätzen. Der Kürze halber sind alle Verkettungsfunktionen mit isAxeClean() gekoppelt, sie sind jedoch mit isAuditedForAccessibility() austauschbar.

Barrierefreiheitsstandards

Deque bietet eine Kettenmethode, mit der direkt angegeben werden kann, welche Zugänglichkeitsteststandards bei einem Scan verwendet werden.

Tag-Name Zugänglichkeitsstandard
wcag2a WCAG 2.0 Stufe A
wcag2aa WCAG 2.0 Stufe AA
wcag2aaa WCAG 2.0 Stufe AAA
wcag21a WCAG 2.1 Stufe A
wcag21aa WCAG 2.1 Stufe AA
wcag21aaa WCAG 2.0 Stufe AAA
wcag22a WCAG 2.2 Stufe A
wcag22aa WCAG 2.2 Stufe AA
wcag22aaa WCAG 2.2 Stufe AAA
section508 Abschnitt 508
EN-301-549 EN 301 549
TTv5 Trusted Tester v5
Best-Practice Von Deque empfohlene Best Practices

Wenn Sie nicht sicher sind, welcher Standard für Sie geeignet ist, lesen Sie in der Axe-Core-Dokumentation nach, welche Regeln mit welchem Standard verknüpft sind, oder kontaktieren Sie uns über Ihren Deque-Vertreter oder unseren Helpdesk. Eine vollständige Liste der für jeden Standard geltenden Regeln finden Sie auf dieser Seite unter Regelbeschreibungen

Um einen einzelnen Standard zu verwenden, fügen Sie einfach die entsprechende Kettenmethode hinzu und geben Sie den gewünschten Standard ein.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a"));

Neben der Verwendung eines Teststandards gibt es zwei Möglichkeiten, anhand von zwei oder mehr Teststandards zu scannen. Beide funktionieren identisch.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a", "section508"));
assertThat(axedriver, isAxeClean().accordingTo("wcag2a").accordingTo("section508"));

Abgrenzung

Deque bietet zwei verkettete Methoden zur Unterstützung bei der Festlegung des Scanumfangs. Die Methode within() ändert den Scan, sodass nur die Seite innerhalb der Grenzen des ihr übergebenen Selektors gescannt wird. Die Methode excluding() funktioniert genau umgekehrt. Es ändert den Scan, um Inhalte innerhalb des übergebenen Selektors zu ignorieren. Die folgenden Beispiele zeigen alle die Methode within(), aber die Methode excluding() funktioniert identisch.

Am einfachsten wird die Assertion mit einem Selektor geändert

assertThat(axedriver, isAxeClean().within("#selector1")); 

Auch zusammengesetzte Selektoren sind möglich. Im folgenden Beispiel werden nur Elemente mit Selektor 2 innerhalb von Selektor 1 gescannt

assertThat(axedriver, isAxeClean().within("#selector1 .selector2"));

Es gibt drei Möglichkeiten, eine Mehrfachauswahl durchzuführen oder mehrere Bereiche zum Testen auszuwählen. In allen diesen Beispielen befinden sich Elemente innerhalb von Selektor 1 und Selektor 2.

assertThat(axedriver, isAxeClean().within("#selector1, .selector2"));
assertThat(axedriver, isAxeClean().within("#selector1", ".selector2"));
assertThat(axedriver, isAxeClean().within("#selector1").within(".selector2"));

Um den Gültigkeitsbereich innerhalb eines IFrames festzulegen, muss ein IFrame-Selektor deklariert werden. Als zusätzlicher Parameter wird der zu scannende Bereich innerhalb des IFrames übergeben.

assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "#selector1")));

Die Bereichseingrenzung innerhalb mehrerer IFrames funktioniert genauso wie die standardmäßige Mehrfachauswahl. Erstellen Sie einfach zwei oder mehr durch Kommas getrennte IFrame-Selektoren.

assertThat(axedriver, isAxeClean().within(new IFrameSelector("#frame1", "selector1"), 
        new IFrameSelector("#frame2", "#selector2")));

Auch ein Scope innerhalb verschachtelter IFrames ist möglich. Dieses Beispiel zeigt das Scoping eines Scans innerhalb des Selektors 1 eines IFrame, der sich innerhalb eines zweiten IFrame befindet.

assertThat(axedriver, isAxeClean().within(
    new IFrameSelector("#frame1",
    new IFrameSelector("#frame2", "#selector1"))));

Schließlich ist es möglich, sowohl innerhalb einer Seite als auch innerhalb eines IFrame mehrere Bereiche festzulegen. Damit dies funktioniert, ist ein Elementauswahlobjekt erforderlich.

assertThat(axedriver, isAxeClean().within(
    new ElementSelector("#selector1"),
    new ElementSelector("#selector2"),
    new IFrameSelector("#frame", "selector3")));

Regelauswahl

Die API bietet auch die Möglichkeit, zu ändern, welche Regeln bei einem Scan verwendet werden. Es gibt drei Möglichkeiten, die verwendeten Regeln zu ändern. Dabei werden zusätzliche Regeln außerhalb des Standardregelsatzes für den Scan geprüft, Regeln innerhalb des Standardregelsatzes für den Scan werden nicht geprüft, und es werden nur die Regeln geprüft, die ausdrücklich angegeben wurden.

Eine vollständige Liste der gültigen Regel-Tags, die Sie mit diesen Methoden verwenden können, und der damit getesteten Elemente finden Sie in der Dokumentation zu Regeln

Um weitere Regeln zu prüfen, verwenden Sie die Prüfmethode. Um eine einzelne zusätzliche Regel zu testen, übergeben Sie einfach die Regelbezeichnung an die Testmethode

assertThat(axedriver, isAxeClean().checking("label"));

Ähnlich wie bei den anderen Kettenmethoden können mehrere zusätzliche Regeln mit der Testmethode auf zwei Arten geprüft werden:

assertThat(axedriver, isAxeClean().checking("label", "tabindex"));
assertThat(axedriver, isAxeClean().checking("label").checking("tabindex"));

Die Testmethode kann auch mit einer Regelauswahlmethode verkettet werden.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a").checking("tabindex"));

Es besteht auch die Möglichkeit, Regeln von einem Scan auszuschließen. Dies ist durch die Skip-Methode möglich. Die Funktionsweise ist identisch zur Überprüfungsmethode, außer dass Regeln ausgelassen statt hinzugefügt werden.

assertThat(axedriver, isAxeClean().skipping("label"));

Es kann auch verwendet werden, um mehrere Regeln wegzulassen.

assertThat(axedriver, isAxeClean().skipping("label", "tabindex"));
assertThat(axedriver, isAxeClean().skipping("label").skipping("tabindex));

Schließlich kann es auch mit einer Methode zur Regelauswahl verwendet werden.

assertThat(axedriver, isAxeClean().accordingTo("wcag2a").skipping("#label"));

Die letzte Methode wird verwendet, wenn nur bestimmte Regeln gewünscht werden. Mit der Methode „Nur überprüfen“ wird der Scan so geändert, dass nur die Regeln geprüft werden, die ihm explizit übergeben wurden. Darüber hinaus lässt sich diese Methode nicht mit der Auswahlmethode für Barrierefreiheitsstandards verknüpfen. So überprüfen Sie nur eine einzelne Regel:

assertThat(axedriver, isAxeClean().checkingOnly("label"));

Mit dieser Methode können auch mehrere Regeln auf zwei Arten überprüft werden.

assertThat(axedriver, isAxeClean().checkingOnly("label", "tabindex"));
assertThat(axedriver, isAxeClean().checkingOnly("label").checkingOnly("tabindex"));

Eine vollständige Liste der gültigen Regel-Tags, die Sie mit diesen Methoden verwenden können, und der damit getesteten Elemente finden Sie in der Dokumentation zu Regeln.

Verstöße ignorieren

Es besteht die Möglichkeit, den Scan so zu konfigurieren, dass bestimmte Verstöße ignoriert werden. Hierzu wird die Methode zum Ignorieren verwendet. Dies funktioniert, indem die Selektoren der Elemente, die Sie ignorieren möchten, als Array übergeben werden, zusammen mit der Regel, die sie verletzen.

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

Nutzungsservice

Erhalten Sie Einblick in die Nutzungstrends von axe DevTools in Ihrem Unternehmen

Standardmäßig ist der Nutzungsdienst deaktiviert und die Standard-URL lautet https://usage.deque.com.

Umgebungsvariablen

Mit dieser Methode können Benutzer bestimmte Werte des Nutzungsdienstes über Umgebungsvariablen ändern.

Umgebungsvariable Art Beschreibung
AXE_IS_LOGGED_IN Boolescher Wert Ob der Benutzer bei der zu testenden App angemeldet ist
AXE_KEYCLOAK_ID String Die Keycloak-ID des angemeldeten Benutzers
AXE_BENUTZER_ID String Der Name des Benutzers, der den Test durchführt
AXE_SESSION_ID String Beschreibung der Testsession
AXE_BENUTZER_STATUS String Der Status des Benutzers
AXE_BENUTZER_JOB_ROLLE String Der Titel/die Rolle der Person, die den Test durchführt
AXE_DISTINCT_ID String Die eindeutige ID eines einzelnen Benutzers
AXE_IS_DEV_INSTANCE Boolescher Wert Ob sich die getestete App in einer Entwicklungsumgebung befindet
AXE_ORGANISATION String Die Organisation des Benutzers – Organisation von Daten im gesamten Unternehmen
AXE_ANWENDUNG String Der Name der getesteten Anwendung
AXE_METRICS_URL String Die URL, an die Nutzungsdaten gesendet werden
AXE_TRACK_NUTZUNGSVERFOLGUNG Boolescher Wert Ob Nutzungsdaten erfasst werden oder nicht

Nächste Schritte

Informationen zur weiteren Verwendung Ihrer axe DevTools Scanergebnisse, z. B. für Berichterstellung, finden Sie in der Dokumentation zum axe DevTools Java Selenium-Paket.(java-test-selenium)

Fehlerbehebung

Wenn beim Einrichten Ihres Barrierefreiheitstests Probleme auftreten, wenden Sie sich direkt an Ihren Deque Vertreter, kontaktieren Sie uns über unseren Support-Desk oder senden Sie uns eine E-Mail.(https://www.deque.com/get-accessibility-help/support/)(mailto:helpdesk@deque.com) Wir unterstützen Sie gerne dabei, Ihre Bemühungen zur Barrierefreiheitsprüfung in Gang zu bringen.