对Windows桌面应用程序进行UI自动化测试

题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试。html


所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操做,以完成特定场景的功能性集成测试。git


要对Windows桌面应用程序进行UI自动化测试,目前可选的技术主要是两种:VS自带的CodedUI Test和Appium+WinAppDriver。可是,微软已经宣布VS2019将是带有CodedUI Test的最后一个版本,且在面对某些复杂场景的时候有点力不从心。而Appium做为移动应用主流的UI测试工具,已经被业界普遍采用,且相关的接口是标准化的,所以微软对其进行了扩展(即WinAppDriver),让Appium能够支持包括Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32)以内的Windows桌面应用。因此采用Appium来做为Windows桌面应用程序UI自动化测试的工具是最佳选择。github


要完成UI自动化测试的大体步骤以下(你首先须要一台Windows 10的PC):app

1,准备好待测试的Windows桌面应用程序。框架

2,到 https://github.com/Microsoft/WinAppDriver/releases 下载WinAppDriver的安装包,进行安装。并启用Windows 10的开发者模式。从安装目录(好比:C:\Program Files (x86)\Windows Application Driver)来启动WinAppDriver。函数

3,用你喜欢的测试框架建立UnitTest项目,在项目中引用Appium.WebDriver这个Nuget包。工具

4,编写测试用例,执行测试。测试


整个用例的编写也相对简单:ui

1,使用DesiredCapabilities来设定要测试的目标应用。orm

2,使用WindowsDriver<WindowsElement>来声明测试的会话。

3,经过测试会话查找对应的UI元素,对UI元素进行SendKeys(模拟填写内容)和Click(模拟点击)等操做,或者获取UI元素的相关Property和Attribute来进行验证。

4,编写测试最挑战的地方就是在于如何查找到UI元素,咱们能够借用Windows SDK里面的inspect.exe这个工具来辅助咱们查找。工具的位置在C:\Program Files (x86)\Windows Kits\10\bin里面的特定版文件夹中。用法是先启动应用程序并导航到待测试的界面,启动这个工具就会得到桌面上全部窗口的UI元素层级关系,并经过焦点等方式导航到要查找的UI元素上。查看相应的信息,并采用适合的查找方式。具体的查找方式可见:https://github.com/Microsoft/WinAppDriver#supported-locators-to-find-ui-elements。选择适合的查找方式有时候须要多尝试几种,有些UI元素只能用特定的方式来查找,好比html的input button只用FindElementByName ,而html的button就能够用FindElementByAccessibilityId 。


测试用例的编写能够参考WinAppDriver源代码自带的Sample,也能够参照个人示例:https://github.com/heavenwing/WindowsAppUITestSample

在个人这个示例当中,目标应用采用的是Hybrid方式运行(即经过WebBrowser来嵌入html,并用C#进行行为操做),考虑到这种应用程序多是多个函数库组装在一块儿,因此测试项目理应也是多个项目组合的(即功能函数库对应一个测试项目),而且其余测试项目能够复用公共的测试步骤(好比:列表页面复用登陆的测试步骤)。

相关文章
相关标签/搜索