所谓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自动化测试相关推荐

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

    题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...

  2. C#【自动化测试】对Windows桌面应用程序进行UI自动化测试

    文章目录 1.文章一: 题记 UI自动化测试 参考 2.文章二: 3.重要资源[实例]: 1)已验证可用[非常好的例子,便于理解] 关键代码 2)未验证 1.文章一: 题记 本文简述如何利用appiu ...

  3. windows桌面应用程序UI自动化工具(转载)

    原文地址:windows桌面应用程序UI自动化工具 - anobscureretreat - 博客园 最近在研究针对windows桌面应用程序的自动化工具,查找了网上相关资料,UI自动化工具很多,但是 ...

  4. Flutter教程之Windows桌面应用程序开发

    Flutter教程之Windows桌面应用程序开发 一.前言 二.环境安装 三.创建项目 四.已有项目添加其他平台支持 一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过 ...

  5. 使用C++代码创建一个Windows桌面应用程序

    下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考. WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HI ...

  6. C#基于.Net框架的学生信息管理系统(Windows桌面应用程序)

    简介 自己用C#编写了一个学生信息管理系统的Windows桌面应用程序,第一次实践,某些地方可能还不够完善,但其中有些函数.方法等的使用可以参考. 工具 我用的集成开发环境是Visual Studio ...

  7. windows桌面应用程序_如何将Windows桌面应用程序转换为通用Windows应用程序

    windows桌面应用程序 With Windows 10's Anniversary Update, Microsoft is making it possible for developers t ...

  8. 如何创建一个 Windows 桌面应用程序?

    工具:Visual Studio 2017 Community 在大学期间,不过学习 C/C++ 还是 Java,每次写的程序都是控制台黑框框,有时候想设计一个可视化的应用程序却不知从何下手,大学里面 ...

  9. 创建传统的Windows桌面应用程序

    文章目录 前言 代码 运行结果 前言 目标:创建的示例应用程序,使用 Windows API 显示 "Hello,Windows desktop!" 应用程序. 教学资料:[SDK ...

最新文章

  1. 树莓派3b+找不到wlan0官方解决方案
  2. R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等
  3. 红米手机使用应用沙盒一键修改imsi信息
  4. 卫星数据现已加入 Azure 豪华套餐,在太空向女神表个白?
  5. Flutter学习之”相对布局“
  6. 类型后面的问号的目的是什么(例如:int?myVariable)?
  7. H3C 基于IP的限速
  8. javascript开发后端程序的神器nodejs
  9. WPF Application 类介绍以及怎样修改启动方式
  10. linux(centOS7,mini),python环境的搭建
  11. 今天的俩个一齐说的即时通讯
  12. mysql 用户授权
  13. 2017.3.3 拔河比赛 思考记录
  14. 16个常用的Linux服务器监控命令
  15. python和c都是什么类型语言-常见的几种语言C,C#,JAVA,Python的运行原理
  16. 企业园区全面安防面临的问题及解决之道
  17. java版Spring Cloud+VR全景+直播短视频带货+三级分销+b2b2c多商家入驻前后端分离商城源码
  18. 高等代数——大学高等代数课程创新教材(丘维声)——3.7笔记+习题
  19. 基于三菱PLC的两轴圆弧插补
  20. 抖音上热门的方法和技巧

热门文章

  1. tabnavigator_使用TabNavigator在Firefox中享受桌面Alt-Tab样式导航
  2. jdk 1结尾和2结尾_“与巢一起工作”的结尾对您意味着什么
  3. 天梯 L2 这是二叉搜索树吗?
  4. 一个脚本实现全量增量备份,并推送到远端备份中心服务器
  5. 如何部署同一个Spring boot web 应用到不同的环境
  6. Winform VS2015打包
  7. t-sql里Linked server跨数据库查询
  8. Java ClassLoader
  9. 介绍一款受欢迎的.NET 开源UI库
  10. 推荐搞IT的你读读《软件随想录》