Windows 应用的 UI 测试
在 Appium 中,Windows 应用的 UI 测试是由 WinAppDriver 支持的,Appium 在下载安装的时候已经带了这部分。
Java 示例
- 在 Java IDE (比如 IntelliJ)中打开包含示例项目工程的目录,如:CalculatorTest
- 在 Java IDE 中 build 并运行这个测试脚本
C# 示例
- 拉取并打开 CalculatorTest 目录下的文件
CalculatorTest.sln
- 在 Visual Studio 2015 中打开 test solution,然后 build 这个测试脚本并选择 Test > Run > All Tests
特性
Windows Application Driver 支持测试 Windows 10 PC 上的Universal Windows Platform (UWP) 及 Classic Windows (Win32) 应用。
创建你的测试脚本
你可以使用任意一个 Appium 或 Selenium 支持的编程语言来编写测试脚本,在下面的例子中,我们会使用 C# 在 Microsoft Visual Studio 2015 编写测试脚本。
创建测试项目工程
- 打开 Microsoft Visual Studio 2015
- 创建 test project 和 solution。选择 New Project > Templates > Visual C# > Test > Unit Test Project
- 创建好之后,打开 Project > Manage NuGet Packages... > Browse ,并搜索 Appium.WebDriver
- 为当前的 test project 安装 Appium.WebDriver
- 接下来就可以编写测试脚本了(可参考 samples 目录下的示例代码)。
Universal Windows Platform 应用的测试
你可以使用 Selenium 支持的编程语言来编写脚本来测试 UWP 应用,通过 app capabilities entry,可以对测试的 app 找到它的 Application Id。下面是一个用 C# 编写的例子,主要是为 Windows 上的 Alarms & Clock app 创建一个测试 session:
// Launch the AlarmClock app
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", "Microsoft.WindowsAlarms_8wekyb3d8bbwe!App");
AlarmClockSession = new IOSDriver<IOSElement>(new Uri("http://127.0.0.1:4723"), appCapabilities);
// Control the AlarmClock app
AlarmClockSession.FindElementByAccessibilityId("AddAlarmButton").Click();
AlarmClockSession.FindElementByAccessibilityId("AlarmNameTextBox").Clear();
在测试自己的应用时,你可以在项目工程下生成的文件 AppX\vs.appxrecipe
中找到该应用的 Application id,如:c24c8163-548e-4b84-a466-530178fc0580_scyf5npe3hv32!App
,这个文件位于 RegisteredUserNmodeAppID 节点下。
Classic Windows 应用的测试
同样的,你可以使用任意一门 Selenium 支持的编程语言来编写对 Classic Windows 应用的测试脚本,并在 app capabilities entry 中指定该应用的绝对路径。下面的例子是对 Windows 系统下的应用 Notepad 创建一个测试 session:
// Launch Notepad
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", @"C:\Windows\System32\notepad.exe");
NotepadSession = new IOSDriver<IOSElement>(new Uri("http://127.0.0.1:4723"), appCapabilities);
// Control the AlarmClock app
NotepadSession.FindElementByClassName("Edit").SendKeys("This is some text");
启动 Session
注意你需要额外使用下面的这些 capabilities 来确保可以获得 Windows App automation session:
platformName
: Windows
deviceName
: WindowsPC
定位 UI 元素
Microsoft Visual Studio 2015 已经默认包含了 Windows SDK,这些 SDK 提供了足够好的用于对你测试的应用进行分析的工具。这类工具能够让你利用 Windows Application Driver 来查看那些你可以找到的 UI 元素或节点。你可以在 Windows SDK 目录(如C:\Program Files (x86)\Windows Kits\10\bin\x86
)下找到 inspect.exe 这个工具。
定位方法 | 匹配属性 |
---|---|
accessibility id | AutomationId |
class name | ClassName |
name | Name |
本文由 fishky2 翻译,由 lihuazhang 校验。