4.3 Gestione degli Errori
Come aggirare gli errori che potresti incontrare utilizzando Axe DevTools for Web per WebdriverIO
La versione 4.3.0 e successive delle integrazioni Axe DevTools utilizzano una nuova tecnica quando si chiama AxeDevToolsWebdriverIO.analyze(), la quale apre una nuova finestra alla fine di un'esecuzione. Molti dei problemi descritti in questo documento riguardano problemi comuni con questa tecnica e le loro potenziali soluzioni.
Driver non aggiornato
Un problema comune è avere un driver non aggiornato. Per risolvere questo problema, assicurati che la tua installazione locale di geckodriver o chromedriver sia aggiornata.
Un esempio di messaggio di errore per questo problema includerà un messaggio su switchToWindow.
Esempio
(node:17566) UnhandledPromiseRejectionWarning: Error: Malformed type for "handle" parameter of command switchToWindow
Expected: string
Actual: undefinedAvere i blocchi popup abilitati
I blocchi popup ci impediscono di aprire la nuova finestra quando si chiama AxeDevToolsWebdriverIO.analyze(). La configurazione predefinita per la maggior parte delle librerie di test automatizzati dovrebbe consentire i popup. Assicurati di non abilitare esplicitamente i blocchi popup che potrebbero causare un problema durante l'esecuzione dei test.
AxeDevToolsWebdriverIO.setLegacyMode(legacy: boolean)
Se per qualche motivo non riesci a eseguire la nuova tecnica AxeDevToolsWebdriverIO.analyze senza errori, axe fornisce un nuovo metodo concatenabile che ti permette di eseguire la versione legacy di AxeDevToolsWebdriverIO.analyze. Quando usi questo metodo, axe esclude problemi di accessibilità che possono verificarsi in frame cross-domain e iframe.
AxeDevToolsWebdriverIO.setLegacyMode è deprecato e sarà rimosso nella versione v5.0. Si prega di segnalare qualsiasi errore che puoi avere durante l'esecuzione di AxeDevToolsWebdriverIO.analyze in modo che possano essere risolti prima che la versione legacy venga rimossa.
Esempio
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();
})();