アクセシビリティツリーのないアプリのための WinAppDriver の代替
WinAppDriver の代替をお探しですか?Windows デスクトップのテスト自動化の仕組みと、アクセシビリティツリーのないアプリを見た目で、コードなしでテストする方法を解説します。
読了 11 分更新日: 2026年11月6日執筆: Ait Nohaila (事業開発担当)
WinAppDriver の代替ツールとは、Windows アプリケーションをそのインターフェイスを通じて操作するあらゆるツールのことです: そのほとんどはアプリケーションのアクセシビリティツリーを読み、各要素を見た目で見つけるものはわずかですが、ツリーのないアプリケーションに必要なのはそちらです。
テストツールにアプリが見えないとき
Inspect をアプリケーションの「保存」ボタンに向けると、表示されるのは空のペイン 1 個だけです。ロケーターは何も見つけられず、WinAppDriver のテストは失敗し、WinAppDriver の代替探しが始まります。
このガイドでは、Windows デスクトップのテスト自動化がどう動いているか、どのアプリケーションが見えないのか、そしてそうした Windows デスクトップアプリケーションをそれでもテストする方法を説明します: 人がするように、すべての要素を見た目で見つける方法です。
Windows デスクトップのテスト自動化はどう動いているのか?
Definition
デスクトップのテスト自動化とは、テスターがするようにインターフェイスを通じてアプリケーションを操作し、表示されるものを検証するソフトウェアです。Windows では、そのほぼすべてが、スクリーンリーダーにも情報を供給しているアクセシビリティフレームワークである Microsoft UI Automation を通ります。
各アプリケーションは、自分のインターフェイスをツリーとして Windows に伝えます。ウィンドウはペインを持ち、ペインはボタン、フィールド、リストを持ち、それぞれに名前、種類、画面上の位置があります。Microsoft Active Accessibility (MSAA) は、古いプログラムに同じことをする、より古い技術です。
標準コントロール
Win32 · WinForms · WPF
独自描画のコントロール
アプリ自身が描画
ツリーを読む
アプリがウィンドウを伝える
ロケーターで見つける
AutomationId、名前、XPath
操作する
クリック、入力、選択
検証する
ツリーから値を読み戻す
テストツールはそのツリーを読み、AutomationId、名前、ツリーをたどる XPath といったロケーターで要素を見つけ、クリックしたり、入力したり、値を読み取ったりします。
ツリーが完全なら、これはうまく働きます。Microsoft は標準の Win32、Windows Forms (WinForms)、WPF の全コントロールの説明を提供しているので、それらは自然にツリーに現れます。カスタムコントロールは違います: その説明は開発者が書かなければならず、それがなければ、Microsoft のドキュメントによると、そのコントロールは UI Automation からほぼ不透明で、位置程度しか報告できません。
WinAppDriver もその代替ツールも同じツリーを読む
Microsoft の Windows Application Driver である WinAppDriver は、UWP、Windows Forms、WPF、従来の Win32 アプリに Selenium のような自動化をもたらしました。GitHub での最後の安定版リリースはバージョン 1.2.1 で 2020 年 11 月のもので、その後 2021 年 7 月に 1.3 のリリース候補版が出ています。その上に作られた Appium Windows ドライバーは現在非推奨とされ、そのドキュメントは Appium WinCore ドライバーを公式の後継として挙げています。
WinAppDriver
2020 年 11 月
バージョン 1.2.1、最後の安定版リリース
2021 年 7 月
1.3 のリリース候補版
2025 年 4 月
リポジトリの最後のコミット: アーカイブされておらず、未解決の Issue が 1,100 件以上
現在
その上に作られた Appium Windows ドライバーは非推奨: 後継は Appium WinCore ドライバー
よく挙がる代替ツールは、それぞれ違う道を通って同じツリーにたどり着きます:
WinUI 3 アプリ向けの Microsoft の最新のガイダンスである、AI エージェント向けの winapp ui コマンドでさえ、実行中のアクセシビリティツリーを読み、すべての対話的なコントロールに AutomationId を設定するよう開発者に求めています。
Web テストツールの比較は、比較調査をご覧ください。
Android アプリも出荷しているチーム向けには、Windows デスクトップアプリと Android アプリのための Appium の代替ツールが、両方を対象にできる 7 個のツールを比較しています。
WinAppDriver の代替ツールの比較
同じツールを並べて比較します: アクセシビリティツリーを読むか、要素の画像にフォールバックできるか、テストを書く言語、ライセンス、そしてまだ保守されているかです。どの行も 2026 年 11 月 6 日にプロジェクトまたはベンダー自身のページで確認したもので、最後の列のリンクからそのページに移動できます。
| ツール | アクセシビリティツリーを読む | 要素を見た目で見つける | テストの言語 | ライセンス | 保守状況と出典 |
|---|---|---|---|---|---|
| WinAppDriver | はい | いいえ | WebDriver クライアントがある任意の言語 | MIT、オープンソース | 最後の安定版リリースは 2020 年 11 月、最後のコミットは 2025 年 4 月で、アーカイブはされていません: リポジトリ。 |
| Appium WinCore | はい | いいえ | Appium が対応する任意の言語 | Apache 2.0、オープンソース | はい、2026 年 11 月にもコミットがあります: リポジトリ。 |
| Appium NovaWindows | はい | いいえ | Appium が対応する任意の言語 | Apache 2.0、オープンソース | はい、2026 年 10 月にもコミットがあります: リポジトリ。 |
| FlaUI | はい | いいえ | C# | MIT、オープンソース | はい、2026 年 8 月にもコミットがあります: リポジトリ。 |
| pywinauto | はい、Win32 API も | いいえ | Python | BSD、オープンソース | はい、2026 年 10 月にもコミットがあります: リポジトリ。 |
| Coded UI | はい | いいえ | C#, Visual Basic | Visual Studio の一部、商用 | いいえ: 非推奨で、Microsoft のドキュメントによれば、そのようなテストを作成できるのは Visual Studio 2019 が最後のバージョンです。 |
| TestComplete | はい | はい、フォールバックとして (デスクトップアプリでは画像を手作業でキャプチャ) | JavaScript、Python、VBScript など、またはキーワードテスト | 商用 | はい: リリース履歴によれば、バージョン 15.85 が 2026 年 9 月にリリースされました。 |
| Ranorex Studio | はい | はい、フォールバックとして | C#, VB.NET | 商用 | はい: サイトでは Ranorex Studio 13.0.0 が最新リリースとして紹介されています (製品ページを参照)。 |
| SikuliX | いいえ | はい、見た目だけで (画像は手作業でキャプチャ) | 独自のスクリプト言語、Java、Python | MIT、オープンソース | いいえ: リポジトリはアーカイブされているため、これ以上の変更は受け付けません。 |
| GUI Test Studio | はい、最初に問い合わせる | はい、記録から (手作業でキャプチャする画像は不要) | コード不要: 記録またはプロンプト | 商用、月額 €39 から | はい: リリースノートをご覧ください。 |
各ツールの強みと限界
| ツール | 強み | 限界 |
|---|---|---|
| WinAppDriver | UWP、WinForms、WPF、Win32 アプリ向けの Selenium 風のテストを、任意の WebDriver 言語で、ライセンス費用なしで書けます。 | 2020 年以降は安定版のリリースがなく、独自描画のコントロールのようにツリーで見つからないものには届きません。 |
| Appium WinCore | Appium から UI Automation を直接読み取り、非推奨となった Windows ドライバーに代わるプロジェクト公式の後継です。 | Appium サーバーとコードで書いたテストが必要で、アプリケーションが伝えない要素には届きません。 |
| Appium NovaWindows | 同じ Appium の道筋で、AutomationId、名前、クラス、コントロールの種類、XPath によるロケーターを使います。 | コードで書いたテストと Appium のセットアップが必要で、ツリーの外には何も届きません。 |
| FlaUI | Microsoft 自身の UI Automation の上に作られた整った .NET ライブラリで、C# のテストプロジェクトによく合います。 | C# のみで、すべての要素にロケーターを書いて保守する必要があり、ツリーの外には何も届きません。 |
| pywinauto | Python で、UI Automation に加えて古いプログラム向けの Win32 バックエンドがあります。 | Python のみで、ステップごとにスクリプトが必要で、ツリーの外には何も届きません。 |
| Coded UI | Visual Studio に組み込まれており、当時はレコーダーもありました。 | 非推奨: そのようなテストを作成できるのは Visual Studio 2019 が最後のバージョンなので、新しいプロジェクトをこれで始めるべきではありません。 |
| TestComplete | キーワードテスト、複数のスクリプト言語、画像ベースのフォールバックを備えた商用ツールです。 | 有料ライセンスで、ドキュメントによれば、デスクトップアプリの画像ベースのテストは画像を 1 枚ずつ手作業で組み立てます。 |
| Ranorex Studio | レコーダー、オブジェクト認識、画像ベースのフォールバックを備えた商用ツールです。 | 有料ライセンスで、標準の認識が失敗したときの画像ベースの部分には、画像を用意しておく必要があります。 |
| SikuliX | アプリケーションへのアクセスなしで、画面上のどんなものでも見た目で見つけます。 | すべての画像を手作業でキャプチャし、すべてのステップがスクリプトの 1 行で、リポジトリはアーカイブされています。 |
| GUI Test Studio | まずツリーに尋ね、ツリーがなければ見た目で要素を見つけ、コードなしで記録やプロンプトからテストを組み立て、必要な画像はすべて自分で保持します。 | Windows のみで、15 日間のトライアル後は有料ライセンスです。 |
アクセシビリティツリーを持たない Windows アプリとは?
これらのどれかに Inspect を向けると、フォームがあるはずの場所に空のペインが 1 個あるだけ、ということがよくあります。これがレガシーアプリケーションのテストの日常であり、多くの最新アプリでも同じです。
| アプリケーションの種類 | ツリーベースのツールがふつう見つけるもの |
|---|---|
| 独自描画のコントロール: アプリ自身が描くグリッド、リボン、ゲージ | 開発者がアクセシビリティを書いていない限り、四角形 1 個 |
| Delphi (VCL) と Visual Basic 6 のプログラム | 自分のウィンドウを持たずに描かれたラベルやボタン、セルをプレースホルダー名の裏に隠すグリッド |
| オーナー描画コントロールを持つ MFC プログラム | プログラム自身が描く、名前もテキストもないことの多いボタンやリスト |
| Java Swing と AWT のアプリケーション | Java Access Bridge をオンにするまで役に立つものはなく、既定ではオフ |
| ゲーム、3D ビューアー、キャンバス、グラフ、地図 | 画像を持つウィンドウ 1 個 |
| Citrix、リモートデスクトップ、VMware Horizon のセッション | コンピューター上の、ピクセルだけのウィンドウ 1 個 |
| 仮想マシン内のアプリ | 中に何もない、仮想マシンのウィンドウ |
| アクセシブルな名前なしに作られた Electron アプリ | 見つける手がかりになる名前のない要素 |
| フォームを独自に描く業務プラットフォーム | 中に何もない、フォーム自身のウィンドウ |
ツリーはあっても、アプリケーションに手を加えられないこともあります: 他社のプログラム、監査のために固定されたビルド、AutomationId を追加してくれないチーム。そうなると、テスト用ビルド、アプリ内のエージェント、コードの変更を必要とするツールはどれも手が届きません。
Electron アプリは特別なケースです: そのページは Chromium と同じように自分自身を Windows に伝えますが、ネイティブのダイアログ、メニュー、トレイアイコン、通知はそのページの外にあり、それを扱うのがElectron アプリのエンドツーエンドテストです。
自分のアプリを 2 分で確認する方法
- 1
検査ツールを開く
Microsoft の検査ツールである Accessibility Insights for Windows をインストールするか、Windows SDK の Inspect を使います。
- 2
テストに必要な要素の上にマウスを置く
それぞれが名前、種類、AutomationId とともに表示されるはずです。
- 3
表示されたものを読む
ウィンドウ全体がペイン 1 個だったり、要素に名前がなかったりするなら、ツリーベースのツールはそれらを確実には見つけられません。
画像ベースのテスト: 画面にあるものをテストする
Definition
画像ベースのテストとは、アプリケーションが要素について伝える内容ではなく、画面上での見た目で要素を見つけるテスト自動化です。アクセシビリティ情報なしでデスクトップのテスト自動化を動かす方法です。アプリケーションには何も求めません: ツリーも、ロケーターも、コードの変更も不要です。要素が目に見えるなら、テストはそこに届きます。
見た目で見つける
実際の画面上の、検索範囲の中で
実際に操作する
実際のマウスとキーボードの入力
言葉を読む
画面に表示されたとおりのテキスト
表示されたものを検証する
期待するものと照らして
SikuliX はその古典的なオープンソースの例です: 各要素の画像をキャプチャし、各ステップをスクリプト 1 行として書きます。商用ツールはこれを代替手段として用意しています。たとえば TestComplete のドキュメントによると、画像ベースのテストを記録できるのは Android アプリだけです: デスクトップアプリでは、画像をキャプチャし、テストコマンドを手作業で追加します。
素朴に作ると、見た目によるテストにはよく知られた弱点があります。それぞれに答えがあります:
| 弱点 | その答え |
|---|---|
| 移動したウィンドウ | 要素が元の場所にないときは、画面全体に広がる検索 |
| 固定座標で記録されたクリック | 各クリックを、要素が今ある場所に向ける |
| 同じ見た目のボタンが複数 | 各要素の周りの検索範囲により、似たものを位置で区別する |
| 少し明るい色合い、少し柔らかい縁 | 描画のノイズは無視しつつ、人が見て分かる本当の違いには不合格を出す比較 |
| 手作業でキャプチャした画像 | すべての画像を代わりに切り出す記録 |
| 異なる画面サイズや拡大縮小 | テストを実行する画面サイズと拡大縮小で記録する |
ツリーを必要としない WinAppDriver の代替
GUI Test Studio は Windows 向けのエンドツーエンドの GUI テストスイートで、画面に見えるどんなアプリケーションでも、コードなしでテストします。ツリーか画面かのどちらかを選ぶことはしません。
記録されたクリック
アプリはその要素を伝えているか?
どちらの場合も、アサーションは見つけたものを記録した画像と比較します。
GUI Test Studio が要素を見つける仕組みでは、2 通りの方法がどう連携するかを説明しています。ここでは、ツリーのないアプリにとってそれが何を意味するかを、順を追って見ていきます。
- 1
アプリを記録する
GUI Test Runner-Recorder で記録をクリックし、アプリを選びます。開いているアプリの中からプログラムを選ぶか、まだ起動していないものを参照して選びます。テストと一緒に起動して終了時に閉じるチェックボックスをオンにしておくと、どの実行も新しく起動したアプリから始まります。あとは、いつもどおりにアプリを使ってください。
記録されるのは常に画面全体です。アプリの選択は、自動アサーションをどこから作るかを決めるだけです。 アプリを選んでおけば、別のプログラムの通知がテストに入り込まず、それでいて自分のクリックやキー操作はすべて記録されます。テストを記録するをご覧ください。
- 2
すべての要素が 2 通りの方法で保持される
各クリックの直前にビジュアルアサーションが付きます: 要素の画像、つまりビジュアルターゲットです。アプリケーションがその要素を Windows に伝えている場合、テストはその説明も保持します。アプリが空のペイン 1 個で答える場合、保持する価値のあるものはなく、画像だけが要素を見つけます。
フォームを独自に描き、フォーム自身のウィンドウしか伝えないプログラムもあります。テストはそのウィンドウを保持するので、移動したフォームも今ある場所で再び見つかります。
- 3
表示されたものを検証する
ビジュアルアサーションは、要素が画面上にあり、正しい見た目であることを検証します。テキストアサーションは、要素に何と書かれているかをアプリケーションに尋ね、アプリケーションが答えられないときは画面上の言葉を読み取ります。動的テキストアサーションは、日付や注文番号のように実行のたびに変わる値を、その形式で検証します。
どの比較も、どんな画面にもある小さな描画の違いは無視しつつ、人が変化と呼ぶ本当のリグレッションはきちんと捕まえます: 間違った色、欠けたアイコン、変わった言葉。ビジュアルアサーションをご覧ください。
- 4
ウィンドウがどこに開いても実行する
テストはクリックやキー操作を実際のマウスとキーボードの入力として再生し、各要素が今ある場所に向けます。アサーションが 1 秒たっても検索範囲内で要素を見つけられないときは画面全体も探すので、ウィンドウが移動してもテストは不合格になりません。その場合、信頼度レポートは要素が検索範囲の外で見つかったことを伝え、GUI Test Studio で検索範囲を広げることを提案します。
複数のディスプレイを持つコンピューターでは、テストは 1 個のディスプレイかすべてのディスプレイを使い、どちらだったかを記憶します。
実行の例: 信頼度レポートは変化した箇所を強調し、平易な言葉で伝えます。
WPF や Windows Forms のアプリについては、コードなしの WPF テスト自動化と WinForms の UI テストが、テストを 1 ステップずつ記録し、アプリがどのコントロールを伝え、どれを隠すかを示します。
ライブラリではなく商用のデスクトップツールから移行するチームは、TestComplete と Ranorex の代替ツール: 購入者のためのチェックリストで、同じ問いへの購入者向けの答えを見つけられます。
Citrix、リモートデスクトップ、仮想マシン
Citrix、リモートデスクトップ (RDP)、VMware Horizon のセッションは、ピクセルだけのウィンドウ 1 個としてコンピューターに届きます。一部のツールは、SmartBear が TestComplete について説明しているように、リモートサーバー自体にインストールされている場合にしかそのコントロールに届きません。GUI Test Studio は、セッションを表示しているコンピューターから、ほかのウィンドウと同じように見た目でテストします。
記録するときにアプリを選んでセッションのウィンドウを指定するか、その中の 1 個のパネルだけなら画面の一部を選びます。仮想マシン内のアプリも同じように動きます: 仮想マシンのウィンドウサイズを固定し、テストを実行するすべてのコンピューターで同じにしてください。テストできるものをご覧ください。
Delphi 製の受注入力プログラムがサーバー上で動いていて、テスターはリモートデスクトップ経由でそれを使います。セッションのウィンドウで 1 件の注文を記録します。各クリックにビジュアルアサーションが付き、「注文を保存しました」を待つテキストアサーションを追加します。
次の実行では、セッションがもっと右側に開きます。どのアサーションもそこで要素を見つけ、どのクリックもそれを追いかけます。
ビルドのたびにデスクトップテストを実行する
コマンドラインランナーの gtr-cli は、「テストを実行」ボタンとまったく同じようにテストを実行します。パイプラインに必要なものを加えます: 終了コード、JUnit ファイル、そして失敗のすべてのエビデンスを 1 個のフォルダーにまとめたものです。
gtr-cli run tests --countdown 0 --junit results\junit.xml --artifacts results\artifactsデスクトップテストは実際の画面上で再生されるので、ビルドエージェントにはロックされていない Windows デスクトップセッションが必要です。画面サイズを固定した仮想マシンがテストエージェントとしてよく働きます。CI/CD ガイドでは、その設定を順を追って説明しています。
要点
- 1WinAppDriver は正式には非推奨になっていませんが、もう開発されていません: 最後の安定版リリースは 2020 年 11 月のもので、その上に作られた Appium ドライバーは Appium WinCore を後継として非推奨になっています。
- 2ほぼすべての代替ツールが同じアクセシビリティツリーを読みます: Appium WinCore と NovaWindows、FlaUI、pywinauto、Coded UI はいずれも、アプリケーションが自分の要素を伝えることを必要とします。
- 3多くのアプリケーションは、ほとんど、あるいはまったく何も伝えません: 独自描画のコントロール、Delphi や VB6 のプログラム、Java Swing、ゲーム、キャンバス、Citrix やリモートデスクトップのセッションです。
- 4画像ベースのテストならそれでも届き、うまく行えば、移動したウィンドウに追従し、描画のノイズを無視しながら、本物の変化は確実に捉えます。
- 5GUI Test Studio は両方を行います: まずアプリケーションに尋ね、アプリケーションが何も伝えないときは見た目で要素を見つけ、コードなしで記録からテストを組み立てます。
よくある質問
WinAppDriver の代わりに何を使えますか?
完全なアクセシビリティツリーを持つアプリケーションなら、Appium WinCore や NovaWindows のドライバー、FlaUI、pywinauto がコードから Windows UI Automation を読み取ります。ツリーのないアプリケーションや、コードなしでテストしたい場合は、GUI Test Studio のように見た目で要素を見つけるツール (ツリーがあればまずそちらに尋ねます) を使ってください。
WinAppDriver はまだ保守されていますか?
GitHub での最後の安定版リリースは 2020 年 11 月のバージョン 1.2.1 で、その後 2021 年 7 月に 1.3 のリリース候補版が出ています。Appium プロジェクトのドキュメントは、WinAppDriver サーバーは何年も Microsoft に保守されていないと述べ、自身の Windows ドライバーの公式な後継として Appium WinCore ドライバーを挙げています。
アクセシビリティツリーのないアプリケーションをテストするには?
見た目でテストします: 実際の画面上で各要素を見た目で見つけ、実際のマウスとキーボードの入力で操作し、画面上の言葉を読み取り、表示されているものを期待するものと比較します。GUI Test Studio はこのすべてを記録から組み立てるので、手作業でキャプチャする画像も、書くべきスクリプトもありません。
Citrix やリモートデスクトップのセッション内のアプリのテストを自動化できますか?
はい、セッションを表示しているコンピューターから自動化できます。セッションはピクセルだけのウィンドウ 1 個としてそのコンピューターに届くので、テストはほかのウィンドウと同じように見た目で要素を見つけ、リモートサーバーには何もインストールしません。
画像ベースのテストは、ウィンドウが移動すると壊れますか?
きちんと作られていれば壊れません。GUI Test Studio はすべてのクリックを要素が今ある場所に向け、1 秒たっても検索範囲内で要素を見つけられないアサーションは画面全体も探すので、ウィンドウが移動してもテストは不合格になりません。
GUI Test Studio は WPF や Windows Forms のアプリでも使えますか?
はい。WPF や Windows Forms のアプリのようにアプリケーションがインターフェイスを Windows に伝えている場合、GTS Engine + AI はまずそれに尋ね、その説明を各アサーションとともに保持します。画像も保持されるので、アプリケーションの答えが不十分になったときでも、テストは要素を見つけられます。
2026 年の時点で WinAppDriver は非推奨ですか?
Microsoft は正式には非推奨にしていませんが、もう開発されていません。2026 年 11 月 6 日の時点で、GitHub リポジトリはアーカイブされておらず、最後のコミットは 2025 年 4 月、最後の安定版リリースは 2020 年 11 月のバージョン 1.2.1 で、1,100 件以上の Issue が未解決です。その上に作られた Appium Windows ドライバーは、Appium プロジェクトによって非推奨とされています。
WinAppDriver の後継は何ですか?
Appium のユーザーにとっては Appium WinCore ドライバーです: Appium プロジェクトはこれを非推奨となった Windows ドライバーの公式の後継と位置づけており、WinAppDriver を経由せずに Windows UI Automation を直接読み取ります。Appium 以外では、C# 向けの FlaUI と Python 向けの pywinauto が同じツリーを読みます。ツリーのないアプリケーションや、コードなしでテストしたい場合は、GUI Test Studio が、ツリーがあればまずそれに尋ね、見た目で要素を見つけます。
WinAppDriver、Windows、Visual Studio、Selenium、Appium、FlaUI、pywinauto、TestComplete、Ranorex、SikuliX、Delphi、Java、Citrix、VMware Horizon、Electron は、それぞれの所有者の商標です。
テスト対象のアプリでご覧になりますか? チームとの 30 分の無料相談を予約してください。