Axe DevTools for WebにおけるPythonのエラーハンドリング
Pythonを用いたAxe DevTools for Webのエラーハンドリングの仕組みを説明します
Axe DevTools Python 4.3によって引き起こされるエラーの回避方法
Axe DevToolsのバージョン4.3.0以降では、Axe.analyze()を呼び出す際に新しい手法が用いられ、実行の最後に新しいウィンドウが開かれます。このドキュメントに記載されている多くの問題は、この手法に関連する一般的な問題と、それに対する可能な解決策を扱っています。
ドライバーのバージョンが古い場合
一般的な問題の一つに、ドライバーのバージョンが古いことが挙げられます。この問題を解決するには、お使いのgeckodriverまたはchromedriverのローカルインストールが最新であることを確認してください。
この問題の例のエラーメッセージには、switchToWindowに関するメッセージが含まれます。
例:
(node:17566) UnhandledPromiseRejectionWarning: Error: Malformed type for "handle" parameter of command switchToWindow
Expected: string
Actual: undefinedポップアップブロッカーが有効な場合
ポップアップブロッカーにより、Axe.analyze()を呼び出した際に新しいウィンドウを開くことができなくなります。ほとんどの自動化テストライブラリのデフォルト設定ではポップアップを許可するべきです。テストを実行する際に問題を引き起こす可能性があるため、ポップアップブロッカーを明示的に有効にしないようにしてください。
Axe.set_legacy_mode()
新しいAxe.analyze()技術をエラーなしに実行できない場合、axeはAxe.analyze()のレガシーバージョンを実行するための新しいチェイナブルメソッドを提供します。このメソッドを使用すると、axeはクロスドメインフレームやiframeで発生する可能性のあるアクセシビリティの問題を除外します。
Axe.set_legacy_mode()は非推奨であり、バージョン5.0で削除される予定です。レガシーバージョンが削除される前に修正するため、Axe.analyze()を実行中に発生したエラーを報告してください。
例
from axe_devtools_api import Axe
driver = ... # open webdriver and go to your page
results = Axe(driver).set_legacy_mode().analyze()