WebDriverJSにおけるエラーハンドリング
Axe DevTools for Web WebDriverJSでよく見られるエラーの回避方法
Axe DevTools for Webのバージョン4.3.0以降では、AxeDevToolsBuilder.analyze()を呼び出す際にランの終わりに新しいウィンドウを開く新しい技術を使用しています。このドキュメントで説明されている問題の多くは、この技術に関する共通の問題とその対策についてです。
ドライバーが古い
一般的な問題として、ドライバーが古いということがあります。この問題を解決するには、ローカルにインストールされているgeckodriverまたはchromedriverが最新であることを確認してください。
この問題の例として、switchToWindowに関するメッセージが含まれるエラーメッセージがあります。
例
(node:17566) UnhandledPromiseRejectionWarning: Error: Malformed type for "handle" parameter of command switchToWindow
Expected: string
Actual: undefinedポップアップブロッカーが有効になっている
ポップアップブロッカーはAxeDevToolsBuilder.analyze()を呼び出す際に新しいウィンドウを開くのを妨げます。ほとんどの自動化テストライブラリのデフォルト設定ではポップアップを許可するはずです。テスト中に問題が発生しないように、ポップアップブロッカーを明示的に有効にしていないことを確認してください。
AxeDevToolsBuilder.setLegacyMode(legacy: boolean)
何らかの理由で新しいAxeDevToolsBuilder.analyze技術をエラーなしで実行できない場合、axeはAxeDevToolsBuilder.analyzeのレガシーバージョンを実行できる新しいチェーン可能なメソッドを提供します。このメソッドを使用する際、axeはクロスドメインフレームやiframeで発生する可能性のあるアクセシビリティの問題を除外します。
AxeDevToolsBuilder.setLegacyModeは非推奨となっており、バージョン5.0で削除されます。レガシーバージョンが削除される前にAxeDevToolsBuilder.analyze実行中のエラーを報告してください。
例
var AxeDevToolsBuilder = require('@axe-devtools/webdriverjs');
const WebDriver = require('selenium-webdriver');
(async () => {
const driver = new WebDriver.Builder().forBrowser('chrome').build();
await driver.get('https://dequeuniversity.com/demo/mars/');
try {
const results = await new AxeDevToolsBuilder(driver)
.setLegacyMode()
.analyze();
console.log(results);
} catch (err) {
// do something with the error
}
await driver.quit();
})();