WindowsAppDriverで電卓アプリを自動テストする(Visual Studioで公式サンプルを動かすまで)
はじめに
仕事で自動テストが必要になったのでWindowsAppDriverを触ってみました。
microsoft公式の電卓サンプルで自動テストを行ってみます。
環境
Windows 10 Version 1909
Visual Studio Community 2019 16.3.10
手順
Windowsの設定から開発者モードを有効にする
GitHub のリリースページ から WindowsApplicationDriver.msi をダウンロード
ダウンロードした WindowsApplicationDriver.msi を実行
WinAppDriver.exeを実行
下記ディレクトリにWinAppDriver.exeがインストールされているので実行する
C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe
以下の画面が表示されると正常に起動されている
テスト実行時はこの画面を起動しておく
Windows Application DriverのGithubからサンプルをダウンロード
Visual Studioからダウンロードしたサンプルを開く(今回は電卓アプリを使用)
ビルドを行う(ビルドによって必要なNuGetパッケージがダウンロードされる)
ScenarioStandard.csのソースを修正
Githubのサンプルは英語に対応しているので日本語対応に修正
Additionメソッド
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();
//Assert.AreEqual("8", GetCalculatorResultText());
session.FindElementByName("1").Click();
session.FindElementByName("プラス").Click();
session.FindElementByName("7").Click();
session.FindElementByName("等号").Click();
Assert.AreEqual("8", GetCalculatorResultText());
}
Multiplicationメソッド
public void Multiplication()
{
// Find the buttons by their names using XPath and click them in sequence to perform 9 x 9 = 81
// session.FindElementByXPath("//Button[@Name='Nine']").Click();
// session.FindElementByXPath("//Button[@Name='Multiply by']").Click();
// session.FindElementByXPath("//Button[@Name='Nine']").Click();
// session.FindElementByXPath("//Button[@Name='Equals']").Click();
session.FindElementByXPath("//Button[@Name='9']").Click();
session.FindElementByXPath("//Button[@Name='乗算']").Click();
session.FindElementByXPath("//Button[@Name='9']").Click();
session.FindElementByXPath("//Button[@Name='等号']").Click();
Assert.AreEqual("81", GetCalculatorResultText());
}
Templatizedメソッド
[TestMethod]
// [DataRow("One", "Plus", "Seven", "8")]
// [DataRow("Nine", "Minus", "One", "8")]
// [DataRow("Eight", "Divide by", "Eight", "1")]
[DataRow("1", "プラス", "7", "8")]
[DataRow("9", "マイナス", "1", "8")]
[DataRow("8", "除算", "8", "1")]
public void Templatized(string input1, string operation, string input2, string expectedResult)
{
// Run sequence of button presses specified above and validate the results
session.FindElementByName(input1).Click();
session.FindElementByName(operation).Click();
session.FindElementByName(input2).Click();
// session.FindElementByName("Equals").Click();
session.FindElementByName("等号").Click();
Assert.AreEqual(expectedResult, GetCalculatorResultText());
}
ClassInitializeメソッド
public static void ClassInitialize(TestContext context)
//中略
// if (!header.Text.Equals("Standard", StringComparison.OrdinalIgnoreCase))
if (!header.Text.Equals("標準", StringComparison.OrdinalIgnoreCase))
{
session.FindElementByAccessibilityId("TogglePaneButton").Click();
Thread.Sleep(TimeSpan.FromSeconds(1));
var splitViewPane = session.FindElementByClassName("SplitViewPane");
splitViewPane.FindElementByName("Standard Calculator").Click();
Thread.Sleep(TimeSpan.FromSeconds(1));
Assert.IsTrue(header.Text.Equals("Standard", StringComparison.OrdinalIgnoreCase));
}
//中略
}
Clearメソッド
public void Clear()
{
// session.FindElementByName("Clear").Click();
session.FindElementByName("クリア").Click();
Assert.AreEqual("0", GetCalculatorResultText());
}
GetCalculatorResultTextメソッド
private string GetCalculatorResultText()
{
//return calculatorResult.Text.Replace("Display is", string.Empty).Trim();
return calculatorResult.Text.Replace("表示は ", string.Empty).Replace(" です", string.Empty).Trim();
}
テスト実行
Author And Source
この問題について(WindowsAppDriverで電卓アプリを自動テストする(Visual Studioで公式サンプルを動かすまで)), 我々は、より多くの情報をここで見つけました https://qiita.com/hario/items/cee2f1f45fc7f5bbd5b9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .