Schrijf Selenium-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

Toegankelijkheidstests schrijven met Selenium WebDriver en Axe DevTools voor Web voor Java

Not for use with personal data

Gebruik Axe DevTools Java Selenium

Deze Axe DevTools-configuratie is niet inherent gebonden aan een assertiebibliotheek. Dit maakt eenvoudige toegankelijkheidstests en volledige testaanpassingen mogelijk en kan worden gebruikt met aangepaste asserties.

Vereisten

Om Axe DevTools Java Selenium te gebruiken en er resultaten mee te produceren, moet je al een testbestand hebben gemaakt met Axe DevTools en je keuze van Selenium WebDriver geïmporteerd en geïnitialiseerd hebben. Als je deze stap nog niet hebt voltooid, lees dan eerst deze gids om te weten hoe je dit moet doen.

Voer een scan uit

Met deze configuratie vereist het uitvoeren van een eenvoudige toegankelijkheidsscan slechts drie regels code. Vervang in je testbestand <URL> door het gewenste webadres van de pagina die je wilt testen. De scanresultaten worden opgeslagen in de results variabele

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

De scanresultaten gebruiken

Zodra je de scan hebt uitgevoerd, wil je misschien iets met de resultaten doen. De eenvoudigste optie is om de resultaten naar de console te printen.

System.out.print(results);

Je kunt de resultaten ook gebruiken om te controleren op toegankelijkheidsproblemen. De eenvoudigste manier om dit te doen is met een uitspraak zoals deze:

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

Voor meer informatie over hoe je het resultatenobject kunt gebruiken om aangepaste tests te schrijven, zie de pagina over de resultaten gebruiken.

Voorbeeld testbestand

Dit testbestand werkt met dezelfde bouwstenen die behandeld worden in importeer en initialiseer evenals de handleiding over het schrijven van tests op deze pagina.

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 dit voorbeeld worden Chrome en ChromeDriver gebruikt. Deze kunnen worden vervangen door elke andere Selenium browserdriver en browser. Als dit testbestand toegankelijkheidsproblemen vindt, print het het aantal gevonden overtredingen uit en wordt beëindigd met statuscode 1 (fout). Om dit testbestand in je eigen omgeving te gebruiken, moet je een URL toevoegen aan de regel

webdriver.get("<URL>");

Aanvullende Referentie

Naast het hierboven beschreven basaal gebruik biedt Axe DevTools Java Selenium verschillende kettingmethoden om de manier waarop de scan wordt uitgevoerd te wijzigen. Deze methoden kunnen het bereik en de regels van de scan wijzigen naar elke gewenste configuratie. Standaard wordt de hele pagina gescand en gecontroleerd op toegankelijkheidsproblemen volgens de WCAG 2.0 niveau AA-richtlijnen. Het is belangrijk om op te merken dat latere aanroepen van de run-methode voorkeuren die hieronder in de kettingmethoden zijn ingesteld, zullen overschrijven. Wijzigingen in het bereik of de regels blijven niet behouden voor meerdere scans met deze kettingmethoden.

Afbakening

Standaard wordt de hele pagina gescand. Axe DevTools ondersteunt echter de mogelijkheid om specifieke delen van een pagina te scannen met zijn afbakeningskettingmethoden. Deze afbakeningsmethoden veranderen effectief het "oppervlaktegebied" van de pagina die gescand moet worden naar het gewenste doelgebied(en). Daarnaast is er een methode om overtredingen te negeren beschikbaar. Het "afbakenen" van de pagina met deze methode vermindert het scanoppervlak niet, maar het zal overtredingen van een gespecificeerd type binnen het gespecificeerde gebied negeren en het gebied alsnog scannen op andere mogelijke overtredingen. Al deze methoden werken op basis van CSS-selectorgebieden. Het gebied van elke CSS-selector op een gegeven pagina kan worden bepaald door het "element inspecteren"-widget van de ontwikkelaarstools van je browser te gebruiken.

Afbakeningsmethoden

Zoals hierboven uitgelegd, veranderen deze methoden effectief het oppervlaktegebied van de pagina die gescand moet worden. Er zijn twee methoden in deze categorie, een "inclusieve" methode en een "exclusieve" methode. Ze kunnen onderling met elkaar worden gekoppeld om meerdere enclaves en exclaves van scanoppervlakte te creëren.

Afbakenen - Includeren

De includerende afbakeningskettingmethode verandert de scan om alleen binnen het pagina gebied uitgevoerd te worden dat is gespecificeerd door de CSS-selector(s) die eraan worden doorgegeven. Er zijn verschillende manieren om de includerende methode te gebruiken: enkele scope, meerdere scopes, samengestelde scope en IFrame-afbakening.

Deze methode kan met een enkele selector als volgt worden gebruikt:

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

Deze scan zal alleen binnen de scope van selector 1 worden uitgevoerd

Je kunt een scan met meerdere scopes instellen:

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

Deze aanroep zal scannen binnen de scope van selector 1 en selector 2. Ze kunnen ofwel door komma's worden gescheiden of worden verklaard in een afzonderlijke includerende clausule.

Samengestelde afbakening kan worden bereikt met de volgende syntaxis:

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

Deze samengestelde afbakening resulteert in dat alleen elementen met selector 2 binnen selector 1 worden gescand. Dit wordt ingesteld door de selectors niet met komma's te scheiden.

Om binnen een IFrame af te bakenen, kan een List<String> worden doorgegeven. De scope die binnen het IFrame moet worden gescand, wordt als een extra parameter doorgegeven.

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

Deze scan wordt uitgevoerd op elementen binnen selector 1, die zich binnen frame 1 bevindt.

Afbakening binnen meerdere IFrames werkt op dezelfde manier als standaard selectie met meerdere scopes. Roep gewoon including opnieuw aan.

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

Deze scan wordt alleen uitgevoerd binnen selector 1 binnen frame 1, en selector 2 binnen frame 2.

Het is ook mogelijk om af te bakenen binnen geneste IFrames:

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

Deze scan wordt uitgevoerd binnen de scope van selector 1 binnen frame 2, die zich zelf binnen frame 1 bevindt

Afbakenen - Uitsluiten

Naast de includerende kettingmethode heeft deze API een uitsluitende methode. Deze methode verandert de scan zodat alleen elementen buiten de gespecificeerde scope worden gescand. De opzet en het gebruik zijn identiek aan de includerende methode, dus raadpleeg de bovenstaande sectie voor meer details en voorbeelden van hoe deze kan worden gebruikt. Een belangrijk detail om te onthouden is dat de includerende en uitsluitende methoden met elkaar kunnen worden gekoppeld om complexe scopes te creëren die veel eenvoudiger zijn dan door alleen te gebruiken include of exclude.

Dit voorbeeld toont een manier om de binnen- en uitsluitende methoden te combineren:

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

Deze scan wordt alleen uitgevoerd op het gedeelte van de pagina dat binnen selector 1 valt, maar niet ook binnen selector 2.

Afbakenen - Overtredingen negeren

De laatste kettingmethode met betrekking tot afbakening is de methode om resultaten te negeren. Deze methode verandert de totale scope van de scan niet, maar zal overtredingen van een gespecificeerd type binnen een gespecificeerde scope negeren. Het werkt door de selector(s) van de element(en) die je wilt negeren als een array door te geven, gekoppeld aan de regel die ze overtreden.

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

Deze scan zal kleurcontrast-overtredingen binnen de zijbalksectie en de branded-content sectie negeren.

Regels

Er zijn drie manieren om uw regelconfiguratie voor elke scan te wijzigen. Deze verschillende methoden maken verschillende granulariteit mogelijk bij het selecteren van een regels om tegen te testen. De minst gedetailleerde regels methode selecteert een regels, of een grotere groep regels gebaseerd op de algemene toegankelijkheidsstandaarden. De iets meer gedetailleerde regels standaarden methode, ook wel bekend als tags, selecteert regels op basis van welke gebieden van een grotere toegankelijkheidsstandaard ze vallen. Ten slotte zijn er drie opties voor configuratie met één regel per keer. Samen staan deze kettingmethoden toe dat u uw scan afstemt om precies de regels uit te voeren die u wilt.

Voor informatie over axe-core regels, bezoek de overzichtspagina van regels.

Selectie van regels

Deze methode selecteert regels op basis van hun meest samengestelde associatie - een regelsysteem. Een regelsysteem is een verzameling van alle regels die betrekking hebben op een branche-brede toegankelijkheidsstandaard. Regelsystemen voor WCAG 2.0, 2.1 en 2.2; ADA Sectie 508; Trusted Tester v5; EN 301 549; en RGAA. Daarnaast kunnen best practice-regels worden ingeschakeld met een booleaanse vlag.

Regelsystemen bestaan vaak uit meerdere tags, die regels groeperen naar meer specifieke onderscheidingen. Bijvoorbeeld, het wcag2 regelsysteem bevat alle regels die getagd zijn als wcag2a WCAG 2.0 niveau A regels, wcag2aa voor WCAG 2.0 niveau AA regels, en wcag2aaa voor WCAG 2.0 niveau AAA regels.

Gebruik deze optie wanneer u een regelsysteem ongemodificeerd wilt selecteren.

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

Deze scan zal alleen uitgevoerd worden met WCAG 2.1 regels.

Om best practice-regels in te schakelen, gebruik de tweede vorm van forRuleset.

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

Standaardselectie

De toegankelijkheidsstandaard of tag-ketenmethode biedt iets meer granulariteit binnen axe-core's regelsystemen. Voor op WCAG gebaseerde regels stelt deze methode u in staat om alleen regels te selecteren die getagd zijn als single-A of double-A. Deze lijst geeft een overzicht van de beschikbare tagnamen en hun overeenkomstige standaarden.

Deze optie is bijzonder nuttig wanneer u slechts een specifiek gedeelte van een regelsysteem wilt testen, bijvoorbeeld alleen de single A regels onder WCAG 2.0.

Tagnaam Toegankelijkheidsstandaard
wcag2a WCAG 2.0 Niveau A
wcag2aa WCAG 2.0 Niveau AA
wcag2aaa WCAG 2.0 Niveau AAA
wcag21a WCAG 2.1 Niveau A
wcag21aa WCAG 2.1 Niveau AA
wcag21aaa WCAG 2.0 Niveau AAA
wcag22a WCAG 2.2 Niveau A
wcag22aa WCAG 2.2 Niveau AA
wcag22aaa WCAG 2.2 Niveau AAA
section508 Sectie 508
EN-301-549 EN 301 549
RGAAv4 RGAA Versie 4
TTv5 Trusted Tester v5
best-practice Best practices aanbevolen door Deque

Hoewel niet expliciet gedefinieerd als onderdeel van een toegankelijkheidsstandaard, bieden we een aantal regels die we "best practices" noemen. Hoewel ze niet strikt noodzakelijk zijn, zal testen met deze regels helpen uw website zo rechtvaardig mogelijk in gebruik te maken.

Een enkele standaard kan als volgt worden geselecteerd:

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

Deze scan zal alleen draaien met regels getagd onder WCAG 2.0 niveau A

Daarnaast kunnen meerdere tags worden gespecificeerd om meerdere toegankelijkheidsstandaarden te selecteren:

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

Deze scans zullen zowel de regels uitvoeren die getagd zijn onder WCAG 2.0 niveau A als ADA Sectie 508.

Regelselectie

Ten slotte kunt u uw regelsysteem wijzigen door een enkele regel. Voor informatie over de namen van alle regels van axe-core en wat elke regel test, zie de axe-core regelbeschrijvingen documentatie.

Deze methoden werken goed wanneer uw gewenste eindgroep van regels slechts verschilt van een bestaand regelsysteem of standaard/tag door een paar individuele regels. Om een volledig aangepast regelsysteem te bouwen, bekijk onze aangepaste regelopties.

Controleren van Extra Regels

De controleketenmethode stelt u in staat om extra regels toe te voegen om mee te testen naast uw standaardregelsysteem.

Deze methode kan worden gebruikt om een enkele extra regel te controleren:

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

waarbij de scan wordt uitgevoerd met de standaardregels plus de regel „label“.

Het kan ook worden gebruikt om meerdere extra regels op twee verschillende manieren te controleren:

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

waarbij de scan wordt uitgevoerd met de standaardregels plus de regels „label“ en „tabindex“.

Het kan ook worden gebruikt om één of meerdere regels aan een specifiek label toe te voegen:

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

waarbij de scan wordt uitgevoerd tegen WCAG 2.0 niveau A regels, met toevoeging van de „tabindex“ regel.

Regels Overslaan

Net als de controleermethode wijzigt de overslaanmethode de standaardregels die door de gespecificeerde regel(en) worden gebruikt. In plaats van het aan de set regels toe te voegen, verwijdert de overslaanmethode de gespecificeerde regel(en) uit de regels die worden gebruikt om de pagina te testen. De opzet en het gebruik ervan zijn identiek aan de controleermethode, dus raadpleeg de bovenstaande sectie voor meer details en voorbeelden over het gebruik ervan. Een belangrijk detail om te onthouden is dat de controleer- en overslaanmethode met elkaar kunnen worden gekoppeld om aangepaste regellijnen te creëren, veel eenvoudiger dan alleen met de negeer- of controleermethodes.

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

Dit voorbeeld toont een scan die wordt uitgevoerd tegen WCAG 2.0 niveau A regels, met toevoeging van de „tabindex“ regel en de verwijdering van de „label“ regel.

Alleen Controleren

De alleen controleren methode controleert alleen de specifiek opgegeven regel(en). Elke regel die niet expliciet wordt vermeld, wordt niet opgenomen in de scan.

Deze ketenmethode kan worden gebruikt om een enkele regel te specificeren:

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

waarbij de scan alleen wordt uitgevoerd met de regel „tabindex“.

Het kan ook worden gebruikt om meer dan één regel op deze twee manieren te specificeren:

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

waarbij de scan alleen wordt uitgevoerd met de regels „label“ en „tabindex“.

iframe Testen Uitschakelen

Op vluchtige pagina's kunnen iframes problemen veroorzaken. Axe moet in elk frame worden geïnjecteerd en op dezelfde manier worden geconfigureerd in elk frame. Als iframes worden toegevoegd of verwijderd terwijl AxeSelenium::run uw pagina test, is het mogelijk dat er uitzonderingen worden gegooid of onverwacht gedrag optreedt. Als failsafe biedt AxeSelenium een methode om alle iframe-interactie uit te schakelen, AxeSelenium::disableIframeTesting. Wanneer ingeschakeld, wordt axe-core niet in iframes op de pagina geïnjecteerd, noch zal het worden uitgevoerd in die iframes. Alleen de pagina op het hoogste niveau wordt gecontroleerd.

Het kan als volgt worden gebruikt:

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

Het gebruik van deze methode wordt niet aanbevolen. Het is altijd beter om te wachten tot uw pagina stabiel is voordat u deze aan AxeSelenium::run doorgeeft.

Gebruik Service

Krijg inzicht in het gebruik van Axe DevTools binnen uw organisatie

De gebruiksservice kan worden geconfigureerd via omgevingsvariabelen of methoden tijdens runtime. Als beide worden gebruikt, worden de waarden in de methoden gebruikt. Opmerking: niet alle gegevensvelden van de gebruiksservice kunnen via methoden worden ingesteld.

Standaard is de gebruiksservice uitgeschakeld en worden de resultaten naar de standaard-url verzonden, https://usage.deque.com.

Omgevingsvariabelen

Deze omgevingsvariabelen stellen u in staat de gebruiksservice te configureren en de eigenschappen van gerapporteerde gebeurtenissen te wijzigen.

Naam Type Kan Override Beschrijving
AXE_DISTINCT_ID String Een UUID-identificator die hetzelfde blijft voor de ingelogde gebruiker (tenzij deze wordt opnieuw gegenereerd)
AXE_METRICS_URL String De URL van het REST-gebruikseindpunt
AXE_TRACK_USAGE Boolean Schakelt het rapporteren van gebruiksservices in (standaard is false)
AXE_APPLICATION String false De applicatie die werd gebruikt om toegankelijkheidsfouten te controleren
AXE_DEV_INSTANCE Boolean true Geeft aan of dit evenement afkomstig is van acties van een softwareontwikkelaar. Nuttig voor het markeren en later verwijderen van evenementen die tijdens ontwikkeling of testen zijn geregistreerd.
AXE_DEPARTMENT String true De afdeling van de gebruiker binnen de organisatie
AXE_KEYCLOAK_ID String false De Keycloak-ID van de gebruiker
AXE_LOGGED_IN Boolean false Registreert of de gebruiker is ingelogd op de toepassing onder test
AXE_ORGANIZATION String true De organisatie van de gebruiker
AXE_SESSION_ID String false Een UUID die de sessie van de gebruiker identificeert
AXE_USER_ID String false De identiteit van een specifieke gebruiker, zoals naam of inlog-ID
AXE_USER_JOB_ROLE String false De functie van de gebruiker
AXE_USER_STATUS String false Statusinformatie die u aan de gebruiker wilt koppelen

Volgen Inschakelen

Met deze methode kunnen gebruikers ervoor kiezen om wel of geen gegevens naar de gebruiksservice te sturen

.enableTracking(boolean state)

Stel Tracking Url In

Met deze methode kunnen gebruikers wijzigen waar de gebruiksmetriekgegevens naar worden verzonden. Standaard is dit https://usage.deque.com

.setTrackingUrl(String url)

Stel Unieke ID In

Met deze methode kunnen gebruikers de unieke id wijzigen die wordt opgeslagen/gebruikt

.setDistinctId(String distinctId)

Volgende Stappen

Zodra je tests schrijft met Axe DevTools, lees meer over resultaten gebruiken om meer gedetailleerde, aangepaste tests te schrijven, of lees over de rapportage gebruiken om rapporten van de toegankelijkheidsscans te genereren.

Probleemoplossing

Als u problemen ondervindt bij het opzetten van uw toegankelijkheidstests, neem dan direct contact op met uw Deque-vertegenwoordiger, bereik ons via onze ondersteuningsdesk, of stuur ons een e-mail. We helpen u graag om uw inspanningen voor toegankelijkheidstests van de grond te krijgen.