对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#进行行为操作),考虑到这种应用程序可能是多个函数库组装在一起,所以测试项目理应也是多个项目组合的(即功能函数库对应一个测试项目),并且其他测试项目可以复用公共的测试步骤(比如:列表页面复用登录的测试步骤)。
对Windows桌面应用程序进行UI自动化测试相关推荐
- python 桌面程序自动化测试_对Windows桌面应用程序进行UI自动化测试
题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...
- C#【自动化测试】对Windows桌面应用程序进行UI自动化测试
文章目录 1.文章一: 题记 UI自动化测试 参考 2.文章二: 3.重要资源[实例]: 1)已验证可用[非常好的例子,便于理解] 关键代码 2)未验证 1.文章一: 题记 本文简述如何利用appiu ...
- windows桌面应用程序UI自动化工具(转载)
原文地址:windows桌面应用程序UI自动化工具 - anobscureretreat - 博客园 最近在研究针对windows桌面应用程序的自动化工具,查找了网上相关资料,UI自动化工具很多,但是 ...
- Flutter教程之Windows桌面应用程序开发
Flutter教程之Windows桌面应用程序开发 一.前言 二.环境安装 三.创建项目 四.已有项目添加其他平台支持 一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过 ...
- 使用C++代码创建一个Windows桌面应用程序
下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考. WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HI ...
- C#基于.Net框架的学生信息管理系统(Windows桌面应用程序)
简介 自己用C#编写了一个学生信息管理系统的Windows桌面应用程序,第一次实践,某些地方可能还不够完善,但其中有些函数.方法等的使用可以参考. 工具 我用的集成开发环境是Visual Studio ...
- windows桌面应用程序_如何将Windows桌面应用程序转换为通用Windows应用程序
windows桌面应用程序 With Windows 10's Anniversary Update, Microsoft is making it possible for developers t ...
- 如何创建一个 Windows 桌面应用程序?
工具:Visual Studio 2017 Community 在大学期间,不过学习 C/C++ 还是 Java,每次写的程序都是控制台黑框框,有时候想设计一个可视化的应用程序却不知从何下手,大学里面 ...
- 创建传统的Windows桌面应用程序
文章目录 前言 代码 运行结果 前言 目标:创建的示例应用程序,使用 Windows API 显示 "Hello,Windows desktop!" 应用程序. 教学资料:[SDK ...
最新文章
- 树莓派3b+找不到wlan0官方解决方案
- R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等
- 红米手机使用应用沙盒一键修改imsi信息
- 卫星数据现已加入 Azure 豪华套餐,在太空向女神表个白?
- Flutter学习之”相对布局“
- 类型后面的问号的目的是什么(例如:int?myVariable)?
- H3C 基于IP的限速
- javascript开发后端程序的神器nodejs
- WPF Application 类介绍以及怎样修改启动方式
- linux(centOS7,mini),python环境的搭建
- 今天的俩个一齐说的即时通讯
- mysql 用户授权
- 2017.3.3 拔河比赛 思考记录
- 16个常用的Linux服务器监控命令
- python和c都是什么类型语言-常见的几种语言C,C#,JAVA,Python的运行原理
- 企业园区全面安防面临的问题及解决之道
- java版Spring Cloud+VR全景+直播短视频带货+三级分销+b2b2c多商家入驻前后端分离商城源码
- 高等代数——大学高等代数课程创新教材(丘维声)——3.7笔记+习题
- 基于三菱PLC的两轴圆弧插补
- 抖音上热门的方法和技巧