WinApp自動化テストDemo

C#

実際の自動化テスト効果

WinApp自動化テストの仕組み

環境準備

  1. Windows 10(開発者モード有効)
  2. Visual Studio 2019
  3. テスト対象のexeファイルを用意する

インストール

  1. WinAppDriverのインストーラをダウンロードする。
    https://github.com/microsoft/WinAppDriver/releases
    こちらはWinAppDriver v1.2.1を使っていた。
  2. WinAppDriverをインストールする。
  3. Windows 10の開発者モードを有効にする。
  4. WinAppDriver.exeを実行する。
    C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe

テストコード作成

  1. Visual Studioで単体テストプロジェクトを作成する。
  2. Nugetパッケージマネージャーで「Appium.WebDriver」をインストールする。
  3. テストコードを作成する。
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Interactions;
using System;
using System.Threading;

namespace WinAppAutoTestDemo
{
    [TestClass]
    public class UnitTest1 : TestSession
    {
        [TestMethod]
        public void TestMethod1()
        {
            Thread.Sleep(1000);

            var inputextBox = _session.FindElementByAccessibilityId("inputextBox1");
            var actions = new Actions(_session);
            actions.MoveToElement(inputextBox);     // inputextBox1にマウスカーソルを移動
            inputextBox.SendKeys("https://zhuzhuming.com");       // キーボードで入力
            actions.Perform();

            var checkBox = _session.FindElementByName("twitter");
            actions = new Actions(_session);
            actions.DoubleClick(checkBox);
            actions.Perform();

            checkBox = _session.FindElementByName("facebook");
            actions = new Actions(_session);
            actions.DoubleClick(checkBox);
            actions.Perform();

            checkBox = _session.FindElementByName("weixin");
            actions = new Actions(_session);
            actions.DoubleClick(checkBox);
            actions.Perform();

            checkBox = _session.FindElementByName("xiaohongshu");
            actions = new Actions(_session);
            actions.DoubleClick(checkBox);
            actions.Perform();

            var button = _session.FindElementByAccessibilityId("投稿");
            actions = new Actions(_session);
            actions.Click(button);
            actions.Perform();

            Thread.Sleep(5000);
        }

        [ClassInitialize]
        public static void ClassInitialize(TestContext context)
        {
            Setup(context);
        }

        [ClassCleanup]
        public static void ClassCleanup()
        {
            TearDown();
        }
    }
    public class TestSession
    {
        protected static WindowsDriver<WindowsElement> _session;

        public static void Setup(TestContext context)
        {
            var options = new AppiumOptions();
            options.AddAdditionalCapability("app", @"E:\099_Technology\C#\csharp\csharp_train\WindowsFormsAppSNS\bin\Debug\WindowsFormsAppSNS.exe");
            _session = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), options);
        }

        public static void TearDown()
        {
            if (_session != null)
            {
                _session.Quit();
                _session = null;
            }
        }
    }
}

キーワード

  • WinAppDriver:WinApp自動化テスト
  • Appium:iOSやAndroid自動化テスト
  • Selenium:Web自動化テスト
  • Inspect.exe:アプリの実行要素が解析できる
  • WinAppDriverUiRecorder.exe:アプリの実行要素が解析できる

参考

コメント

タイトルとURLをコピーしました