OCR テスト
モバイルネイティブアプリやデスクトップサイトでの自動テストは、一意の識別子がない要素を扱う場合に特に困難になることがあります。標準的な WebdriverIO セレクタ が常に役立つとは限りません。ここで登場するのが @wdio/ocr-service
です。これは OCR(光学文字認識)を活用して、画面上の要素を表示されるテキストに基づいて検索、待機、操作できる強力なサービスです。
以下のカスタムコマンドが提供され、browser/driver
オブジェクトに追加されるため、作業に必要な適切なツールセットが得られます。
await browser.ocrGetText
await browser.ocrGetElementPositionByText
await browser.ocrWaitForTextDisplayed
await browser.ocrClickOnText
await browser.ocrSetValue
仕組み
このサービスは以下のことを行います:
- 画面/デバイスのスクリーンショットを作成します。(必要に応じて、特定の領域を指定するための「干し草」として要素または長方形オブジェクトを提供できます。各コマンドのドキュメントを参照してください。)
- スクリーンショットを高コントラストの白黒に変換してOCRのために最適化します(高コントラストは多くの画像背景ノイズを防ぐために必要です。これはコマンドごとにカスタマイズ可能です。)
- Tesseract.js/Tesseractの光学文字認識を使用して、画面からすべてのテキストを取得し、画像上で見つかったすべてのテキストをハイライトします。ここで見つけることができる複数の言語をサポートしています。
- Fuse.jsのファジーロジックを使用して、指定されたパターンに「おおよそ等しい」文字列を見つけます(完全一致ではなく)。例えば、検索値
Username
がUsename
というテキストも見つけることができます。 - ターミナルを通じて画像を検証しテキストを取得するための CLI ウィザード(
npx ocr-service
)を提供します。
ステップ1、2、3の例はこの画像で確認できます
このサービスは(WebdriverIOが使用するもの以外の)システム依存関係がゼロで動作しますが、必要に応じてTesseractのローカルインストールでも動作することができ、実行時間を大幅に短縮できます!(テストの高速化についてはテスト実行の最適化も参照してください。)
興味がありますか?使い方ガイドに従って今すぐ使い始めましょう。