-
Notifications
You must be signed in to change notification settings - Fork 0
MS_UIAutomation
- 戻る(テスト自動化、Windows OSの基礎的トピック、その他、開発の色々(
MS_MiscDevelopmentTopics.md))- テスティング・フレームワーク
- UIオートメーション
UIの自動化を行う技術。
提供されるUIオートメーション・プロバイダを使用すれば比較的楽に実装が可能。
Officeの場合は、Officeオートメーション(Visual Basic for Applications (VBA): MS_VBA.md)を使用する。
各種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 を使う。
- WPF(
MS_WPF.md)には、System.Windows.Automationというプロバイダが提供されている。
このUIオートメーションを利用することで、以下のアプリケーションのUIを操作できる。- Win32
- Windowsアプリケーション
- .NET
- Windows Forms(
MS_WindowsForms.md)アプリケーション - WPF アプリケーション
- Windows Forms(
- Win32
- 参考
上記の各種、UIオートメーション・プロバイダをラップした
ドライバを使用してテスト・スクリプトを組む Selenium というツールがある。
- 昔は、各種WWWブラウザを対象としていた。
-
Selenium IDE というツールで、容易に、
テスト・シナリオを開発できるようになっている。 - Windows 10 から Selenium から利用可能な
Windows Application Driver が提供され、
Selenium でテスト・スクリプトを組むことができるようになっている。
- 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イベント監視:SetWindowsHookExでフックして操作をキャプチャ。
- UI要素方式
UI要素をオブジェクトとして認識し、属性や操作をAPIで行う方式。- UIA非対応のUIサブシステムの場合はウィンドウ・システムのDLL注入とAPIフックを使用して行う。
- UIAを使用する場合は、OS が提供するアクセシビリティレイヤーを通じて、UI要素の取得・操作・イベント監視が可能。
- Win32(
MS_Win32.md) - Windows Forms(
MS_WindowsForms.md)
- WPF(
MS_WPF.md) - 各種 WWWブラウザ
以下で使用されている。
基本的には「レグレッション(回帰)テスト系」に応用されることが多い。
-
また、Visual Studio 同梱の機能に
コード化された UI テスト(Coded UI Test)
がある。
-
参考
-
こちらを参照すると、
- コード化された UI テスト(Coded UI Test)は、
UI Automation Libraryをランタイムとして使用する機能であることが解る。 - エントリ系の自動化に特化した用途であれば、有用である可能性がある。
#UIテスト自動化の導入方針の「使い捨て前提で適用シーンを絞り込んで利用」に合致。
- コード化された UI テスト(Coded UI Test)は、
-
参考
- コード化された UI テストと操作の記録でサポートされている構成とプラットフォーム
- 要件:Visual Studio Ultimate, Visual Studio Premium
- コード化された UI テストと操作の記録でサポートされている構成とプラットフォーム
補足(最新化): Coded UI Test は Visual Studio 2019 で非推奨となり、 Visual Studio 2022 では削除された。 Microsoft は代替として Selenium(Web)/ Appium(デスクトップ・モバイル)を案内している。
次いで、スクレイピング技術が主要な応用先となっている。
- コードを書くことなくウェブサイトからデータを抽出できるスクレイピングツール
- 出したデータは、Octoparseのクラウドサーバーに保存され、
- Excel、JSON、CSV、HTML、データベースなどの構造化形式のファイルでエクスポートできる。
- 参考
UIオートメーション、スクレイピング技術を応用したものと言える。
Dynamics CRMのコールセンター・システムのUIマッシュアップ機能
(RPA (Robotic Process Automation): MS_RPA.md)
- 画面スクレイピング技術の大幅な技術的進化と言われている。
- (が、実際は、UIオートメーション技術を寄せ集めたソリューションと思われる)
主なプロダクト(いずれも MS_RPA.md を参照)
- WinActor
- UiPath
- Automation Anywhere
- Power Automate
(セレクターの問題)ケース
アプリケーションやウェブページを起動するたびにUI要素のIDや属性値が変わる場合
標準のアクセシビリティAPIと互換性のないカスタムフレームワークを使用しているため、要素ピッカーで要素を選択できない。
フロー実行時に要素が画面に表示されていなかったり、表示に時間がかかったりする場合、エラーになることがある。
仮想環境では、UI要素の認識に問題が発生しやすい場合がある。
UIサブシステム(GDI、WPF、Webなど)が変更されると、UI要素の名前(セレクターの一部)が変わり、認識できなくなる。
座標は画面の解像度や表示スケールに依存。
アプリケーションのウィンドウが常に同じ位置、同じサイズで表示される必要がある。
レイアウトが変更されたり、要素のサイズが変わったりすると、座標がずれる。
- ブラウザ拡張Selenium IDEでユーザー操作を記録・再現できる! - ICS MEDIA
- [2018年時点] SeleniumIDE についてまとめてみた
- Selenium IDEで「はじめよう自動化」
- 【C#】WinAppDriverの使い方 | 思い立ったが吉日
- Windows Application Driver を正式にリリース - Windows Blog for Japan
- Windows Application DriverでWindowsアプリケーションのテストを自動化しよう
Tags: テスト, デバッグ, .NET開発, ツール類, その他、開発の色々
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。