【C#】WinAppDriverの使い方

注意

この記事は公開から1年以上経過しています。
内容が古い可能性がありますのでご注意ください。

.NETアプリのUIテストを自動化してみたかったので、
WinAppDriverを使ってみました(*’▽’)


WinAppDriverとは?

WinAppDriverリポジトリを見てみると
以下の通りに書いてあります。

Windows Application Driver is a service to support Selenium-like UI Test Automation on Windows Applications. This service supports testing Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32) apps on Windows 10 PCs. Windows Application Driver complies to the JSON Wire Protocol standard and some application management functionalities defined by Appium. If you’ve been looking for better support for using Appium to test Windows Applications, then this service is for you!

ざっくりと要約すると以下の通りです。

  • SeleniumみたいなUI自動テストツール(Selenium…Webブラウザ向けUI自動テストツール)
  • Windows10でUWP/WinForms/WPF/Win32アプリのテストを自動化可能

WinAppDriver準備

WinAppDriverのインストール

ダウンロードページから「WinAppDriver.msi」をダウンロードします。

ダウンロード後はインストーラを実行し、
インストールするだけなので割愛します。


WinAppDriverの起動

以下のパスに実行ファイルがあるはずなので実行します。

C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe

以下の画面が表示されたらOKです。


サンプルプロジェクトの実行

サンプルプロジェクトダウンロード

試しに電卓テストサンプルをダウンロードします。

ビルド

対象のソリューションファイルを開きます。
その後にビルドを実行し、ビルドを正常終了させます。
(NuGetでのパッケージダウンロードも必要ですがビルド前にダウンロードされます。)

ソース修正

英語表記でのWin10向けソースなので修正箇所がいくつかあります。
今回は最低限のテストパターンでしか動くようにする方法しか
書かないので全部動かしたい場合は頑張ってください!(*´з`)

//if (!header.Text.Equals("standard", StringComparison.OrdinalIgnoreCase))
if (!header.Text.Equals("標準", StringComparison.OrdinalIgnoreCase))
[TestInitialize]
public void Clear()
{
    //session.FindElementByName("clear").Click();
    session.FindElementByName("クリア").Click();
    Assert.AreEqual("0", GetCalculatorResultText());
}
private string GetCalculatorResultText()
{
    //return calculatorResult.Text.Replace("display is", string.Empty).Trim();
    return calculatorResult.Text.Replace("表示は ", string.Empty).Replace(" です", string.Empty).Trim();
}
[TestMethod]
public void Addition()
{
    // Find the buttons by their names and click them in sequence to perform 1 + 7 = 8
    //session.FindElementByName("One").Click();
    //session.FindElementByName("Plus").Click();
    //session.FindElementByName("Seven").Click();
    //session.FindElementByName("Equals").Click();
    session.FindElementByName("1").Click();
    session.FindElementByName("プラス").Click();
    session.FindElementByName("7").Click();
    session.FindElementByName("等号").Click();
    Assert.AreEqual("8", GetCalculatorResultText());
}

テスト実行

後は実行するだけです。

実行後のテストに対して✔がついていれば問題ないです。🍆


WinAppDriverが起動されていない場合

WinAppDriverが起動されていないと以下のエラーが発生します。


次があるとしたら「WinAppDriver UI Recorder」だけど
誰でも簡単にってわけにもいかなさそうなのでどうするかなぁ…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です