惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
月光博客
月光博客
Vercel News
Vercel News
Recorded Future
Recorded Future
I
InfoQ
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
罗磊的独立博客
Martin Fowler
Martin Fowler
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
爱范儿
爱范儿
The Cloudflare Blog
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
博客园 - 【当耐特】
WordPress大学
WordPress大学
C
Check Point Blog
小众软件
小众软件
L
LangChain Blog
V
V2EX
博客园 - 司徒正美
C
CERT Recently Published Vulnerability Notes
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News | PayPal Newsroom
美团技术团队
C
Cybersecurity and Infrastructure Security Agency CISA
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
Security Latest
Security Latest
O
OpenAI News
G
GRAHAM CLULEY
P
Palo Alto Networks Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - 朱永光

Dapr云原生应用开发系列6:绑定构建块 Dapr云原生应用开发系列7:工作流集成 Dapr微服务应用开发系列5:发布订阅构建块 Dapr微服务应用开发系列4:状态管理构件块 Dapr微服务应用开发系列3:服务调用构件块 Dapr微服务应用开发系列2:Hello World与SDK初接触 Dapr微服务应用开发系列1:环境配置 Dapr微服务应用开发系列0:概述 利用Azure Functions和k8s构建Serverless计算平台 我如何通过K8S开发认证(CKAD)考试 Service Fabric是什么? 如何把遗留的Java应用托管在Service Fabric中 如何在本地数据中心安装Service Fabric for Windows集群 当TFS/VSTS遇上Power BI .NET英文技术文章导读(2017-03-23) .NET英文技术文章导读(2017-02-09) Power BI入门教程 数据分析师的福音——VS 2017带来一体化的数据分析开发环境 如何把Power BI嵌入到Web应用中
对Windows桌面应用程序进行UI自动化测试
朱永光 · 2019-08-23 · via 博客园 - 朱永光

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

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

要对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自动化测试的工具是最佳选择。

要完成UI自动化测试的大致步骤如下(你首先需要一台Windows 10的PC):

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,编写测试用例,执行测试。

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

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

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#进行行为操作),考虑到这种应用程序可能是多个函数库组装在一起,所以测试项目理应也是多个项目组合的(即功能函数库对应一个测试项目),并且其他测试项目可以复用公共的测试步骤(比如:列表页面复用登录的测试步骤)。