Schreiben Sie Selenium-Tests
Verwenden Sie axe DevTools Java Selenium
Diese axe DevTools Konfiguration ist nicht automatisch an eine Assertion-Bibliothek gebunden. Dies ermöglicht einfache Barrierefreiheitstests sowie eine vollständige Testanpassung und Verwendung mit benutzerdefinierten Assertions.
Voraussetzungen
Um axe DevTools Java Selenium zu verwenden und damit Ergebnisse zu erzielen, müssen Sie bereits eine Testdatei mit axe DevTools erstellt und den Selenium WebDriver Ihrer Wahl importiert und initialisiert haben. Wenn Sie diesen Schritt noch nicht abgeschlossen haben, lesen Sie zunächst diese Anleitung , um zu erfahren, wie das geht.
Scan durchführen
Mit dieser Konfiguration sind zum Ausführen eines grundlegenden Zugänglichkeitsscans nur drei Codezeilen erforderlich. Ersetzen Sie in Ihrer Testdatei <URL> Mit der gewünschten Webadresse der Seite, die Sie testen möchten. Die Scan-Ergebnisse werden in der results
Variable gespeichert
webdriver.get("<URL>");
Results results = axeSelenium.run(axedriver);
webdriver.quit();
Verwenden der Scan-Ergebnisse
Nachdem Sie den Scan ausgeführt haben, möchten Sie möglicherweise etwas mit den Ergebnissen tun. Die einfachste Möglichkeit besteht darin, die Ergebnisse auf der Konsole auszudrucken.
System.out.print(results);
Sie können die Ergebnisse auch verwenden, um zu prüfen, ob Verstöße gegen die Barrierefreiheit vorliegen. Am einfachsten geht das mit einer Anweisung wie dieser:
if (!results.violationFree()) {
//do something, like throw an exception
}
Weitere Informationen zur Verwendung des Ergebnisobjekts zum Schreiben benutzerdefinierter Tests finden Sie auf der Seite Verwenden der Ergebnisse.
Beispiel-Testdatei
Diese Testdatei funktioniert mit denselben Bausteinen, die in Importieren und Initialisieren sowie in der Anleitung zum Schreiben von Tests auf dieser Seite behandelt werden.
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!");
}
}
In diesem Beispiel werden Chrome und ChromeDriver verwendet. Dies kann durch jeden anderen Selenium-Browsertreiber und -Browser ersetzt werden. Wenn diese Testdatei Probleme mit der Zugänglichkeit findet, gibt sie die Anzahl der gefundenen Verstöße aus und wird mit dem Statuscode 1 (Fehler) beendet. Um diese Testdatei in Ihrer eigenen Umgebung verwenden zu können, müssen Sie der Zeile eine URL hinzufügen
webdriver.get("<URL>");
Zusätzliche Referenzmaterialien
Zusätzlich zur oben beschriebenen grundlegenden Verwendung bietet axe DevTools Java Selenium mehrere Verkettungsmethoden, um die Art und Weise zu ändern, wie der Scan ausgeführt wird. Mit diesen Methoden können Umfang und Regelsatz des Scans in jede gewünschte Konfiguration geändert werden. Standardmäßig wird die gesamte Seite gescannt und gemäß den WCAG 2.0-Richtlinien der Stufe AA auf Verstöße gegen die Barrierefreiheit überprüft. Ein wichtiger Hinweis ist, dass nachfolgende Aufrufe der run-Methode alle unten aufgeführten Einstellungen der Kettenmethoden überschreiben. Am Umfang oder an den Regeln vorgenommene Änderungen bleiben bei mehreren Scans mit diesen Kettenmethoden nicht erhalten.
Umfang
Standardmäßig wird die gesamte Seite gescannt. Allerdings unterstützt axe DevTools mit seinen Scoping-Chain-Methoden die Möglichkeit, bestimmte Teile einer Seite zu scannen. Diese Scoping-Methoden verändern effektiv den „Bereich“ der zu scannenden Seite in die gewünschten Zielbereiche. Darüber hinaus steht eine Methode zum Ignorieren von Verstößen zur Verfügung. Durch das „Eingrenzen“ der Seite mit dieser Methode wird der Scanbereich nicht verkleinert, aber Verstöße eines bestimmten Typs innerhalb des angegebenen Bereichs werden ignoriert, während der Bereich weiterhin auf andere potenzielle Verstöße geprüft wird. Alle diese Methoden funktionieren auf Basis von CSS-Selektorbereichen. Der Bereich jedes CSS-Selektors auf einer bestimmten Seite kann mithilfe des Widgets „Element untersuchen“ der Entwicklertools Ihres Browsers bestimmt werden.
Umfang-Methoden
Wie oben erläutert, verändern diese Methoden effektiv die Oberfläche der zu scannenden Seite. In dieser Kategorie gibt es zwei Methoden, eine „inklusive“ Methode und eine „exklusive“ Methode. Sie können gegenseitig verkettet werden, um mehrere Enklaven und Exklaven des Scannbereichs zu erstellen.
Umfang – Einschließen
Die Methode „Einschließende Bereichsdefinitionsmethode“ ändert den Scan so, dass er nur innerhalb des Seitenbereichs ausgeführt wird, der durch die ihm übergebenen CSS-Selektoren angegeben wird. Es gibt mehrere Möglichkeiten, die Einschließende Methode zu verwenden: Einzelbereich, Mehrfachbereich, zusammengesetzter Bereich und IFrame-Bereich.
Diese Methode kann mit einem einzelnen Selektor wie folgt verwendet werden:
axeselenium.including("#selector1").run(axedriver);
Dieser Scan wird nur im Geltungsbereich von Selektor 1 ausgeführt
Sie können einen Scan mit mehreren Geltungsbereichen einrichten:
axeselenium.including("#selector1").including("#selector2").run(axedriver);
Dieser Aufruf scannt innerhalb des Geltungsbereichs von Selektor 1 und Selektor 2. Sie können entweder durch Kommas getrennt oder in einer separaten einschließenden Klausel deklariert werden.
Die zusammengesetzte Geltungsbereichsbestimmung kann mit der folgenden Syntax erreicht werden:
axeselenium.including("#selector1 .selector2").run(axedriver);
Diese zusammengesetzte Bereichseingrenzung führt dazu, dass nur Elemente mit Selektor 2 innerhalb von Selektor 1 gescannt werden. Dies wird dadurch erreicht, dass die Selektoren nicht durch Kommas getrennt werden.
Um den Bereich innerhalb eines IFrames zu beschränken, kann ein List<String>
übergeben werden. Als zusätzlicher Parameter wird der zu scannende Bereich innerhalb des IFrames übergeben.
axeselenium.including(Arrays.asList(new String[] {"#frame1", "#selector1"})).run(axedriver);
Dieser Scan wird auf Elementen innerhalb des Selektors 1 ausgeführt, der sich innerhalb von Frame 1 befindet.
Die Bereichseingrenzung innerhalb mehrerer IFrames funktioniert genauso wie die standardmäßige Mehrfachauswahl. Rufen Sie einfach including
noch einmal.
axeselenium.including(Arrays.asList(new String[] {"#frame1", "#selector1"}))
.including(Arrays.asList(new String[] {"#frame2", "#selector2"})).run(axedriver);
Dieser Scan wird nur innerhalb von Selector 1 innerhalb von Frame 1 und Selector 2 innerhalb von Frame 2 ausgeführt.
Es ist auch möglich, den Bereich innerhalb verschachtelter IFrames zu beschränken:
axeselenium.including(Arrays.asList(new String[] {"#frame1", "#frame2", "#selector1"})).run(axedriver);
Dieser Scan läuft im Rahmen von Selector 1 innerhalb von Frame 2, der sich selbst innerhalb von Frame 1 befindet.
Umfang – Ausschließen
Zusätzlich zur einschließende Kettenmethode verfügt diese API über eine ausschließende Methode. Diese Methode ändert den Scan so, dass nur Elemente außerhalb des angegebenen Bereichs gescannt werden. Die Einrichtung und Verwendung ist mit der Einschlussmethode identisch. Weitere Einzelheiten und Anwendungsbeispiele finden Sie im obigen Abschnitt. Ein wichtiges Detail, das Sie sich merken sollten, ist, dass die Einschluss- und Ausschlussmethoden miteinander verkettet werden können, um komplexe Bereiche viel einfacher zu erstellen, als durch die bloße Verwendung von „include“ oder „exclude“.
Dieses Beispiel zeigt eine Möglichkeit zum Paaren der Methoden „innerhalb“ und „ausschließend“:
axeselenium.including("#selector1").excluding("#selector2").run(axedriver);
Dieser Scan wird nur für den Teil der Seite ausgeführt, der sich innerhalb von Selektor 1 und nicht auch innerhalb von Selektor 2 befindet.
Umfang – Ignorieren von Verstößen
Die letzte mit dem Gültigkeitsbereich verbundene Verkettungsmethode ist die Methode zum Ignorieren von Ergebnissen. Diese Methode ändert den Gesamtumfang des Scans nicht, ignoriert jedoch Verstöße eines bestimmten Typs innerhalb eines bestimmten Umfangs. Dies funktioniert, indem die Selektoren der Elemente, die Sie ignorieren möchten, als Array übergeben werden, zusammen mit der Regel, die sie verletzen.
axeselenium.ignoring("[\".sidebar\", \"#branded-content\"]", "color-contrast").run(axedriver);
Bei diesem Scan werden Verstöße gegen den Farbkontrast im Seitenleistenbereich und im Bereich mit Markeninhalten ignoriert.
Regeln
Es gibt drei Möglichkeiten, Ihre Regelkonfiguration für jeden Scan zu ändern. Diese unterschiedlichen Methoden ermöglichen eine unterschiedliche Granularität bei der Auswahl der zu testenden Regel. Bei der am wenigsten granularen Regelsatzmethode wird ein Regelsatz oder eine größere Gruppe von Regeln basierend auf den allgemeinen Zugänglichkeitsstandards ausgewählt. Bei der etwas detaillierteren Methode der Regelsatzstandards, auch als "tags" bekannt, werden Regeln basierend darauf ausgewählt, in welche Bereiche eines umfassenderen Zugänglichkeitsstandards sie fallen. Schließlich gibt es drei Möglichkeiten zur Konfiguration mit jeweils einer Regel. Die Kettenmethoden ermöglichen Ihnen, Ihren Scan so abzustimmen, dass er genau die gewünschten Regeln ausführt.
Informationen zu den axe-core-Regeln finden Sie auf der Regelsatzübersichtsseite.
Regelsatzauswahl
Diese Methode wählt Regeln nach ihrer höchsten Aggregationsebene aus – einem Regelsatz. Ein Regelsatz ist eine Sammlung aller Regeln, die sich auf einen branchenweiten Zugänglichkeitsstandard beziehen. Regelsätze für WCAG 2.0, 2.1 und 2.2; ADA Abschnitt 508; Trusted Tester v5; und EN 301 549. Zusätzlich können Best-Practice-Regeln mit einem Booleschen Flag aktiviert werden.
Regelsätze bestehen oft aus mehreren Tags, bei denen es sich um nach spezifischeren Gesichtspunkten gruppierte Regeln handelt. Beispielsweise enthält der wcag2
Regelsatz alle Regeln, die als wcag2a
WCAG 2.0-Regeln der Stufe A, wcag2aa
WCAG 2.0-Regeln der Stufe AA und wcag2aaa
WCAG 2.0-Regeln der Stufe AAA gekennzeichnet sind.
Verwenden Sie diese Option, wenn Sie einen unveränderten Regelsatz auswählen möchten.
axeselenium.forRuleset("wcag2.1").run(axedriver);
Dieser Scan wird nur mit den WCAG 2.1-Regeln ausgeführt.
Um Best-Practice-Regeln zu aktivieren, verwenden Sie die zweite Form von forRuleset
.
axeselenium.forRuleset("wcag2.1", true).run(axedriver);
Standardauswahl
Der Zugänglichkeitsstandard oder die Methode der Tag-Ketten ermöglicht eine etwas größere Granularität innerhalb der Regelsätze von Axe-Core. Bei WCAG-basierten Regeln können Sie mit dieser Methode nur Regeln auswählen, die mit Single-A oder Double-A gekennzeichnet sind. Diese Liste enthält eine Aufschlüsselung der verfügbaren Tag-Namen und der entsprechenden Standards.
Diese Option ist besonders nützlich, wenn nur ein bestimmter Teil eines Regelsatzes getestet wird, beispielsweise nur die einzelnen A-Regeln gemäß WCAG 2.0.
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 |
Obwohl es nicht explizit als Teil eines Zugänglichkeitsstandards definiert ist, bieten wir eine Reihe von Regeln an, die wir als „Best Practices“ bezeichnen. Das Testen anhand dieser Regeln ist zwar nicht unbedingt erforderlich, trägt jedoch dazu bei, dass Ihre Website möglichst gerecht genutzt werden kann.
Ein einzelner Standard kann wie folgt ausgewählt werden:
axeselenium.accordingTo("wcag2a").run(axedriver);
Dieser Scan wird nur mit Regeln ausgeführt, die unter WCAG 2.0 Level A gekennzeichnet sind.
Darüber hinaus können mehrere Tags angegeben werden, um mehrere Barrierefreiheitsstandards auszuwählen:
axeselenium.accordingTo("wcag2a", "section508").run(axedriver);
Bei diesen Scans werden alle Regeln ausgeführt, die unter WCAG 2.0 Level A und ADA Section 508 gekennzeichnet sind.
Regelauswahl
Schließlich können Sie Ihren Regelsatz mit einer einzelnen Regel modifizieren. Informationen zu den Namen aller Regeln von axe-core und dazu, was jede Regel testet, finden Sie in der Dokumentation zu den Regelbeschreibungen von axe-core.
Diese Methoden funktionieren gut, wenn sich die gewünschte endgültige Gruppe von Regeln nur durch einige einzelne Regeln von einem vorhandenen Regelsatz oder Standard/Tag unterscheidet. Um einen vollständig angepassten Regelsatz zu erstellen, sehen Sie sich unsere benutzerdefinierten Regeloptionen an.
Überprüfen zusätzlicher Regeln
Mit der Prüfkettenmethode können Sie Ihrem Standardregelsatz weitere zu testende Regeln hinzufügen.
Mit dieser Methode kann eine einzelne zusätzliche Regel überprüft werden:
axeselenium.checking("label").run(axedriver);
Der Scan wird mit dem Standardregelsatz ausgeführt, zusätzlich zur „Label“-Regel.
Darüber hinaus können damit auf zwei verschiedene Arten mehrere zusätzliche Regeln überprüft werden:
axeselenium.checking("label", "tabindex").run(axedriver);
axeselenium.checking("label").checking("tabindex").run(axedriver);
Der Scan wird mit dem Standardregelsatz ausgeführt, zusätzlich zu den Regeln „Label“ und „Tabindex“.
Es kann auch verwendet werden, um einem angegebenen Tag eine oder mehrere Regeln hinzuzufügen:
axeselenium.accordingTo("wcag2a").checking("tabindex").run(axedriver);
Dabei wird der Scan anhand der WCAG 2.0-Regeln der Stufe A getestet, zusätzlich zur Regel „Tabindex“.
Regeln überspringen
Ähnlich wie bei der Prüfmethode ändert die Überspringmethode die zu verwendenden Standardregeln auf die angegebenen Regeln. Anstatt sie jedoch zum Regelsatz hinzuzufügen, entfernt die Überspringmethode die angegebenen Regeln von denen, die zum Testen der Seite verwendet werden. Die Einrichtung und Verwendung ist mit der Prüfmethode identisch. Weitere Einzelheiten und Beispiele zur Verwendung finden Sie im obigen Abschnitt. Ein wichtiges Detail, das Sie sich merken sollten, ist, dass die Prüf- und Überspringmethoden können miteinander verkettet werden, um viel einfacher benutzerdefinierte Regelsätze zu erstellen, als nur die Ignorier- oder Prüfmethoden allein zu verwenden.
axeselenium.accordingTo("wcag2a").checking("tabindex").skipping("label").run(axedriver);
Dieses Beispiel zeigt einen Scantest anhand der WCAG 2.0-Regeln der Stufe A, wobei die Regel „Tabindex“ hinzugefügt und die Regel „Label“ entfernt wurden.
Nur prüfen
Mit der Methode „Nur prüfen“ werden nur die angegebenen Regeln geprüft. Nicht ausdrücklich angegebene Regeln werden beim Scannen nicht berücksichtigt.
Mit dieser Kettenmethode kann eine einzelne Regel angegeben werden:
axeselenium.checkingOnly("tabindex").run(axedriver);
Wo nur mit der Regel „tabindex“ der Scan ausgeführt wird.
Es können damit auch mehrere Regeln auf die folgenden zwei Arten angegeben werden:
axeselenium.checkingOnly("label", "tabindex").run(axedriver);
axeselenium.checkingOnly("label").checkingOnly("tabindex").run(axedriver);
Wo nur mit den Regeln „label“ und „tabindex“ der Scan ausgeführt wird.
Deaktivieren des Tests iframe
Auf volatilen Seiten können Iframes Probleme verursachen. Axe muss in jeden Frame eingefügt und
muss in jedem Frame auf die gleiche Weise konfiguriert werden. Wenn iframes hinzugefügt oder entfernt werden, während AxeSelenium::run
Beim Testen Ihrer Seite können Ausnahmen ausgelöst werden oder unerwartetes Verhalten auftreten. Als ein
Failsafe, AxeSelenium
stellt eine Methode zum Deaktivieren aller Iframe-Interaktionen bereit AxeSelenium::disableIframeTesting
.
Wenn aktiviert, wird Axe-Core weder in Iframes auf der Seite eingefügt, noch wird es in den besagten Iframes ausgeführt. Es wird nur die Seite der obersten Ebene überprüft.
Es kann wie folgt verwendet werden:
axeselenium.disableIframeTesting().run(axedriver);
Die Verwendung dieser Methode wird nicht empfohlen. Es ist immer besser, zu warten, bis Ihre Seite stabil ist, bevor Sie sie übergeben AxeSelenium::run
.
Nutzungsdienst
Erhalten Sie Einblick in die Nutzungstrends von axe DevTools in Ihrem Unternehmen
Der Nutzungsdienst kann zur Laufzeit über Umgebungsvariablen oder Methoden konfiguriert werden. Wenn beides verwendet wird, werden die Werte in den Methoden verwendet. Hinweis: Nicht alle Nutzungsdienst-Datenfelder können über Methoden festgelegt werden.
Standardmäßig ist der Nutzungsdienst deaktiviert und die Standard-URL, an die Ergebnisse gesendet werden, ist 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 |
Tracking aktivieren
Mit dieser Methode können Benutzer entscheiden, ob sie Daten an den Service zur Nutzungsauswertung senden möchten oder nicht.
.enableTracking(boolean state)
Tracking-URL festlegen
Mit dieser Methode können Benutzer ändern, wohin die Daten zur Nutzungsauswertung gesendet werden. Standardmäßig auf https://usage.deque.com
.setTrackingUrl(String url)
Eindeutige ID festlegen
Mit dieser Methode können Benutzer die eindeutige ID ändern, die gespeichert/verwendet wird
.setDistinctId(String distinctId)
Nächste Schritte
Wenn Sie Tests mit axe DevTools schreiben, lesen Sie mehr über die Verwendung von Ergebnissen , um detailliertere benutzerdefinierte Tests zu schreiben, oder lesen Sie mehr über die Verwendung des Reporters , um Berichte zu den Barrierefreiheitsscans zu erstellen.
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.