4.3 エラーハンドリング
WebdriverIO向けのAxe DevToolsを使用する際に発生する可能性のあるエラーに対処する方法
バージョン4.3.0以降のAxe DevTools統合は、AxeDevToolsWebdriverIO.analyze()を呼び出す際に新しい技術を使用しており、実行終了時に新しいウィンドウが開かれます。この文書で説明されている問題の多くは、この技術に関連する一般的な問題とその可能性のある解決策を扱っています。
ドライバーが古い状態である
一般的な問題として、ドライバーが古い状態であることがあります。この問題を解決するには、geckodriverまたはchromedriverのローカルインストールが最新であることを確認してください。
この問題に関するエラーメッセージの例には、switchToWindowに関するメッセージが含まれます。
例
(node:17566) UnhandledPromiseRejectionWarning: Error: Malformed type for "handle" parameter of command switchToWindow
Expected: string
Actual: undefinedポップアップブロッカーが有効になっている
ポップアップブロッカーは、AxeDevToolsWebdriverIO.analyze()を呼び出す際に新しいウィンドウを開くのを妨げます。大半の自動化テストライブラリのデフォルト設定ではポップアップが許可されているはずです。テストを実行する際に問題を引き起こす可能性があるため、ポップアップブロッカーを明示的に有効にしないようにしてください。
AxeDevToolsWebdriverIO.setLegacyMode(legacy: boolean)
何らかの理由で新しいAxeDevToolsWebdriverIO.analyze技術をエラーなしで実行できない場合、axeはレガシーバージョンのAxeDevToolsWebdriverIO.analyzeを実行するための新しいチェーンメソッドを提供します。このメソッドを使用する際、axeはクロスドメインフレームおよびiframeで発生する可能性のあるアクセシビリティ問題を除外します。
AxeDevToolsWebdriverIO.setLegacyModeは非推奨とされ、バージョン5.0で削除されます。レガシーバージョンが削除される前に、AxeDevToolsWebdriverIO.analyzeを実行中に発生する可能性のあるエラーを報告してください。
例
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();
})();