4.3 Fehlerbehandlung
Wie Sie mit Fehlern umgehen können, die bei der Verwendung von Axe DevTools für Web mit WebdriverIO auftreten können
Version 4.3.0 und höher der Axe DevTools-Integrationen verwenden eine neue Technik beim Aufruf von AxeDevToolsWebdriverIO.analyze(), die am Ende eines Durchlaufs ein neues Fenster öffnet. Viele der in diesem Dokument beschriebenen Probleme betreffen häufige Schwierigkeiten mit dieser Technik und mögliche Lösungen.
Veralteter Treiber
Ein häufiges Problem ist ein veralteter Treiber. Um dieses Problem zu beheben, stellen Sie sicher, dass Ihre lokale Installation von geckodriver oder chromedriver auf dem neuesten Stand ist.
Eine Beispiel-Fehlermeldung für dieses Problem enthält eine Nachricht über switchToWindow.
Beispiel
(node:17566) UnhandledPromiseRejectionWarning: Error: Malformed type for "handle" parameter of command switchToWindow
Expected: string
Actual: undefinedAktivierte Popup-Blocker
Popup-Blocker verhindern das Öffnen des neuen Fensters beim Aufruf von AxeDevToolsWebdriverIO.analyze(). Die Standardkonfiguration der meisten Automatisierungstest-Bibliotheken sollte Popups zulassen. Bitte stellen Sie sicher, dass Sie Popup-Blocker nicht ausdrücklich aktivieren, da dies ein Problem beim Ausführen der Tests verursachen könnte.
AxeDevToolsWebdriverIO.setLegacyMode(legacy: boolean)
Falls es Ihnen aus irgendeinem Grund nicht möglich ist, die neue AxeDevToolsWebdriverIO.analyze-Technik fehlerfrei auszuführen, bietet axe eine neue kaskadierbare Methode, die Ihnen ermöglicht, die Legacy-Version von AxeDevToolsWebdriverIO.analyze zu verwenden. Bei Verwendung dieser Methode schließt axe Barrierefreiheitsprobleme aus, die in fremden Frames und iFrames auftreten können.
AxeDevToolsWebdriverIO.setLegacyMode ist veraltet und wird in Version 5.0 entfernt. Bitte melden Sie alle Fehler, die beim Ausführen von AxeDevToolsWebdriverIO.analyze auftreten, damit sie vor dem Entfernen der Legacy-Version behoben werden können.
Beispiel
const { AxeDevToolsWebdriverIO } = require('@axe-devtools/webdriverio');
const { remote } = require('webdriverio');
(async () => {
const client = await remote({
logLevel: 'error',
capabilities: {
browserName: 'chrome'
}
});
await client.url('https://dequeuniversity.com/demo/mars/');
const builder = new AxeDevToolsWebdriverIO({ client });
try {
const results = await builder
.setLegacyMode()
.analyze();
console.log(results);
} catch (e) {
// do something with the error
}
await client.deleteSession();
})();