Skip to content

MS_UIAutomation

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

UIオートメーション

概要

UIの自動化を行う技術。

基礎

プロバイダ

提供されるUIオートメーション・プロバイダを使用すれば比較的楽に実装が可能。

Officeオートメーション

Officeの場合は、Officeオートメーション(Visual Basic for Applications (VBA): MS_VBA.md)を使用する。

WWWブラウザのオートメーション

各種WWWブラウザでは、各種UIオートメーションのプロバイダが提供されている。

  • IEの場合は、ProgID = InternetExplorer.Application の COM(MS_COM.md)を使う。
  • モダンブラウザの場合は、WebDriver(W3Cの勧告)が提供される。
  • 調べたら、
    • IEにもWebDriverが提供されている(COM は VBA から利用)。
    • SeleniumBasicを使用すれば、VBAからSelenium → WebDriverが利用可能。

※ Internet Explorer は 2022年6月にサポート終了し、 InternetExplorer.Application による自動化も現行 Windows では利用できない。 Edge / Chrome の WebDriver、または Playwright / Puppeteer を使う。

System.Windows.Automation

  • WPF(MS_WPF.md)には、System.Windows.Automationというプロバイダが提供されている。
    このUIオートメーションを利用することで、以下のアプリケーションのUIを操作できる。
    • Win32
      • Windowsアプリケーション
    • .NET
      • Windows Forms(MS_WindowsForms.md)アプリケーション
      • WPF アプリケーション
  • 参考

ツール類

Selenium

上記の各種、UIオートメーション・プロバイダをラップした
ドライバを使用してテスト・スクリプトを組む Selenium というツールがある。

  • 昔は、各種WWWブラウザを対象としていた。
  • Selenium IDE というツールで、容易に、
    テスト・シナリオを開発できるようになっている。
  • Windows 10 から Selenium から利用可能な
    Windows Application Driver が提供され、
    Selenium でテスト・スクリプトを組むことができるようになっている。

Windows Application Driver

  • UI テストの自動化を可能にするオープン スタンダード ベースのツール。
  • Windows 10 上であらゆるアプリケーションの UI テストを自動で実施できる。
  • オープン スタンダードをサポートしているため、
    Appium や Selenium などの既存の UI テスト自動化ツールや好みの言語
    を使用して Windows アプリケーション用のテストを記述できる。

※ WinAppDriver 単体のリポジトリはアーカイブされ、 現在は Appium の Windows ドライバ(appium-windows-driver) として維持されている。

独自実装

UIオートメーションのライブラリを自作する場合、UIサブシステムによって方法が異なる。

  • ウィンドウ・メッセージ方式
    UI要素の構造を直接認識せず、ウィンドウ・メッセージで処理
    ウィンドウ・システムのDLL注入とAPIフックを使用する)。
    • UIイベント監視:SetWindowsHookExでフックして操作をキャプチャ。
      (近年は SendInput や PostMessage を組み合わせることが多い)
    • UI操作の強制:SendMessage / PostMessage を使って、操作を自動化。
  • UI要素方式
    UI要素をオブジェクトとして認識し、属性や操作をAPIで行う方式。
    • UIA非対応のUIサブシステムの場合はウィンドウ・システムのDLL注入とAPIフックを使用して行う。
    • UIAを使用する場合は、OS が提供するアクセシビリティレイヤーを通じて、UI要素の取得・操作・イベント監視が可能。

GDI

  • Win32(MS_Win32.md
  • Windows Forms(MS_WindowsForms.md

独自描画

  • WPF(MS_WPF.md
  • 各種 WWWブラウザ

応用

以下で使用されている。

テスト

基本的には「レグレッション(回帰)テスト系」に応用されることが多い。

Coded UI Test

  • また、Visual Studio 同梱の機能に

    コード化された UI テスト(Coded UI Test)

    がある。

  • 参考

  • こちらを参照すると、

    • コード化された UI テスト(Coded UI Test)は、
      UI Automation Libraryをランタイムとして使用する機能であることが解る。
    • エントリ系の自動化に特化した用途であれば、有用である可能性がある。
      #UIテスト自動化の導入方針の「使い捨て前提で適用シーンを絞り込んで利用」に合致。
  • 参考

    • コード化された UI テストと操作の記録でサポートされている構成とプラットフォーム
      • 要件:Visual Studio Ultimate, Visual Studio Premium

補足(最新化): Coded UI Test は Visual Studio 2019 で非推奨となり、 Visual Studio 2022 では削除された。 Microsoft は代替として Selenium(Web)/ Appium(デスクトップ・モバイル)を案内している。

, etc.

スクレイピング

次いで、スクレイピング技術が主要な応用先となっている。

Octoparse

  • コードを書くことなくウェブサイトからデータを抽出できるスクレイピングツール
  • 出したデータは、Octoparseのクラウドサーバーに保存され、
  • Excel、JSON、CSV、HTML、データベースなどの構造化形式のファイルでエクスポートできる。
  • 参考

, etc.

UIマッシュアップ

UIオートメーション、スクレイピング技術を応用したものと言える。

Unified Service Desk

Dynamics CRMのコールセンター・システムのUIマッシュアップ機能

, etc.

RPA

(RPA (Robotic Process Automation): MS_RPA.md

  • 画面スクレイピング技術の大幅な技術的進化と言われている。
  • (が、実際は、UIオートメーション技術を寄せ集めたソリューションと思われる)

主なプロダクト(いずれも MS_RPA.md を参照)

  • WinActor
  • UiPath
  • Automation Anywhere
  • Power Automate

問題

UI要素を特定できない

(セレクターの問題)ケース

動的セレクター

アプリケーションやウェブページを起動するたびにUI要素のIDや属性値が変わる場合

カスタムUIフレームワーク

標準のアクセシビリティAPIと互換性のないカスタムフレームワークを使用しているため、要素ピッカーで要素を選択できない。

要素の非表示/遅延表示

フロー実行時に要素が画面に表示されていなかったり、表示に時間がかかったりする場合、エラーになることがある。

Citrix, RDPなど

仮想環境では、UI要素の認識に問題が発生しやすい場合がある。

UIサブシステム変更

UIサブシステム(GDI、WPF、Webなど)が変更されると、UI要素の名前(セレクターの一部)が変わり、認識できなくなる。

座標指定が機能しない

画面解像度やスケールの変更

座標は画面の解像度や表示スケールに依存。

ウィンドウの位置やサイズ変更

アプリケーションのウィンドウが常に同じ位置、同じサイズで表示される必要がある。

動的なレイアウト

レイアウトが変更されたり、要素のサイズが変わったりすると、座標がずれる。

参考

Microsoft Learn

Selenium

Selenium IDE

Windows Application Driver


Tags: テスト, デバッグ, .NET開発, ツール類, その他、開発の色々

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally