如何测试Windows应用程序
本教程主要讲解如何使用AirtestIDE进行Windows应用程序的自动化测试 以网易云音乐Windows版为案例 。
通过阅读本文 你将学会
AirtestIDE对普通Windows应用程序的测试支持 主要依靠图像识别框架 Airtest 进行位置定位 使用 pywinauto的操作接口进行模拟操作。
Poco在Windows上的支持暂时尚未推出 我们将会尽快推出该功能 敬请期待。
要使用AirtestIDE测试某个Windows程序 首先要将待测试的Windows窗口与AirtestIDE进行连接 其实也就是将Windows窗口的句柄告诉给AirtestIDE。在成功连接窗口后 Airtest能够将该窗口作为一个设备 接下来就像在操作一台Android设备一样 能够对Windows窗口进行图像识别、点击操作等。
注意 由于选定连接Windows窗口后 在AirtestIDE中操作、运行脚本时 将会依赖这个特定的窗口句柄。因此在窗口选定后请不要随意关闭 否则会导致运行时无法找到对应窗口而报错。
AirtestIDE提供了一键嵌入Windows窗口的功能 如下所示
点击AirtestIDE的选定窗口按钮 将可以选择桌面上一个已经启动的Windows应用 此时窗口边缘将会显示绿色方框 把它嵌入到AirtestIDE中。嵌入窗口后 可以方便地在AirtestIDE中操作窗口、录制语句、运行脚本。
由于Windows应用的底层实现各不相同 有些应用窗口如果使用默认的一键嵌入方法 在嵌入到AirtestIDE里之后会遇到一些问题 例如嵌入后无法用鼠标操作、无法正常嵌入、嵌入后无法显示图像等 。
针对这些问题 我们提供了一种无嵌入连接的方案 请在AirtestIDE的设置面板中 找到Device-Windows Embed Backup Method 勾选后即可使用备用方案来连接窗口。
接下来的连接方式和常规方法一样 点击选定窗口 然后选择待测窗口程序
从图中可以看到 这种窗口连接方式不会将Windows窗口嵌入到AirtestIDE里 虽然在脚本录制时不如默认嵌入方式简单好用 但是能够避免一些窗口嵌入带来的问题。
假如想要测试的窗口不止一个 拥有多个不同的窗口句柄 单独嵌入一个窗口可能无法满足测试需求 此时我们也提供了第三种方案 桌面模式。
点击桌面模式按钮 此时AirtestIDE右侧的设备窗口将会完全隐藏 进入Windows桌面模式。
在此模式下 录制脚本与运行脚本都与正常情况下没有区别 只不过执行时将会对整个桌面进行截图识别 甚至可以识别到AirtestIDE代码窗口里的截图语句 因此在执行脚本时 请尽量缩小AirtestIDE的窗口 避免脚本界面里的截图干扰执行结果 。
在成功连接上Windows窗口后 就相当于我们已经连接上了一台设备 接下来可以对它进行脚本的录制与回放了。
首先 touch / wait / exists / assert_exists / assert_not_exists等Airtest带有截图的语句 与在Android/iOS设备上录制并没有太大区别
但是需要注意的是 在使用鼠标拖拽框选好想要截图的位置后 需要双击该截图区域才能完成截图 而不会在鼠标松开时自动完成截图 这也是Windows下截图的最大区别。
因此截图的步骤是
以及 在录制swipe语句时 在完成截图区域框选后 需要单击滑动终点完成语句录制。
和Android/iOS一样 Airtest也对Windows下的常用操作进行了封装 底层操作接口使用的是pywinauto库。
因此 在编写Windows应用的测试脚本时 我们可能需要查阅以下几个API文档
Airtest的跨平台API 这里的所有API都可以在脚本里直接调用Airtest的Windows专属API 请查阅后面提供的代码示例来了解如何调用Windows设备的专属接口如果需要更复杂的操作 可能需要查阅pywinauto提供的API为了方便演示 我们假设这个脚本没有在命令行中传入参数 而是在脚本里使用connect_device接口来连上一个句柄为123456的窗口 并对它进行一些操作
from airtest.core.api import * dev connect_device( Windows:///123456 ) # 通用的接口调用方式 与其他平台相同 touch(图片) 复制代码
假如我们希望能够调用一些Windows的专属操作 比如查阅了Airtest的Windows专属API文档后 我们发现有一些操作是只有Windows窗口才有的
# 调用Windows专属的接口 例如获取当前窗口的标题内容 print(dev.get_title()) # 把窗口移动到某个坐标位置 dev.move((100, 200)) 复制代码
接下来 假设我们现在想要使用鼠标滚轮 在查阅Airtest的API后发现 Airtest的Windows模块并没有封装鼠标滚轮的功能 此时我们可以进一步查询pywinauto的文档 寻找到mouse相关的章节后 就知道如何调用鼠标滚轮接口了
dev.mouse.scroll(coords (80, 100), wheel_dist 1) 复制代码
在Android中 我们可以通过keyevent( HOME )来实现按下HOME键的操作 而在Windows中 我们同样可以通过keyevent接口发送一些按键响应。Android的按键码是基于ADB的 而Airtest的Windows模块则封装使用了pywinauto支持的按键码 请查阅pywinauto.keyboard文档内容来编写Windows下的keyevent接口参数
# 在pywinauto中 符号^也代表了CTRL键 因此^a即为全选 Ctrl A keyevent( ^a ) # 例如这是删除键的输入方式 需要加上括号{} keyevent( {DEL} ) 复制代码
请大家根据实际需求 查阅文档后再编写按键响应的代码。
在AirtestIDE的Windows模式中 运行脚本和查看报告与其他平台并无不同
然而 最需要注意的一点是 在AirtestIDE里连接的窗口 都是用窗口句柄连接的。窗口句柄是每个Windows窗口对象拥有的独一无二的32位无符号整数 而且每次打开窗口 这个数值都会变化。
这就意味着 假如我们用某个窗口嵌入到AirtestIDE里写出了一个脚本 虽然这次可以直接运行 但是通过复制AirtestIDE里的脚本命令行的方式 是无法保证下一次还能够运行的。因为AirtestIDE里的命令行 将会有这样的参数内容--device Windows:///句柄 而下次再打开窗口 可能句柄已经发生了变化。
因此 我们也可以不使用句柄 而是通过其他的方式来连接窗口。Airtest的Windows模块 使用了pywinauto的connect接口来连接窗口 因此除了句柄以外 我们可以通过窗口标题来连接
# 连接一个Windows窗口 窗口句柄为123456 Windows:///123456 # 连接一个Windows窗口 窗口名称匹配某个正则表达式 Windows:///?title_re Unity.* # 连接windows桌面 不指定任何窗口 对应IDE的桌面模式 Windows:/// 复制代码
在命令行中假如想使用窗口名称连接 不需要添加引号等符号 直接这样写
airtest run test.air --device Windows:///?title_re Unity.* 复制代码
有一些Windows-app已经接入了Poco 例如Unity游戏窗口 我们同样能够使用AirtestIDE来方便地查看和选中UI节点。但是在使用这个功能前 需要事先告诉AirtestIDE这个Windows窗口所在位置以及窗口大小。
在“选项”-“设置”-“Poco” 选择“Windows Content Area Rect” 框选窗口主画面后双击确认(右键/esc可取消) 随后即可开始使用Poco相关功能了 如图所示
针对Windows窗口的Poco支持 我们正在完善文档和功能 敬请期待。
CrossOver电脑虚拟机下载 如何切换Windows系统及下载win应用程序 苹果电脑CrossOver试用期到了该怎么办?初次在苹果电脑下载安装CrossOver会有14天的免费试用,试用结束后便无法再通过CrossOver下载Windows应用程序了。苹果电脑CrossOver怎么使用?CrossOver主要有三个步骤分别是(1)选择应用;(2)选择安装包;(3)创建容器,开始安装应用程序。下面我们来看详细介绍吧!
微软推人人可用的机器学习,打通windows应用程序任督二脉,惠及5000万开发者 微软「Build开发者大会」首次线上开幕,CEO Nadella对开发者倾诉衷肠,微软此次推出了WhiteNoise等多个机器学习工具包,让你的机器学习模型更上一层楼,Project Reunion一统Windows应用程序开发!更有量子计算平台预览版,HoloLens、Office套件等强力升级更新。
5个要点,告诉您为何要将旧版 Windows 应用程序进行现代化改造 在短短一年多的时间里,Microsoft 对 Windows Server 2008 的支持即将结束。如果没有做出适当的规划,连锁反应可能会影响您的业务。维护成本将急剧上升,而安全性和合规性风险将在没有定期补丁的情况下增加。
Docker Windows Server 应用迁移计划上线,让您轻松处理旧版应用程序! 上周,我们发布了 Docker Windows Server 应用程序迁移计划,旨在帮助公司快速、轻松地迁移应用程序以及对旧版的 Windows Server 2008 应用程序进行现代化改造,同时推动在任何地方的任何应用程序进行持续创新。
相关文章
- [Windows 驱动开发] 使用 verifier 测试驱动 bug
- Windows 10 系统进入测试模式命令
- [Redis]windows下redis的安装和启动
- python+selenium自动化测试 —— Windows环境搭建
- windows系统IIS环境下安装memcache的方法
- xmpp 服务器配置 open fire for windows 及 spark 测试
- windows python flask读取文件数据并返回表格
- C#【自动化测试】对Windows桌面应用程序进行UI自动化测试
- 如何在局域网中将Ubuntu文件夹共享给Windows
- Windows消息循环机制详细概述
- Windows sshfs挂载远程文件夹
- windows测试物理网络
- windows开了远程控制访问老提示密码账号不正确
- sql server 2014 在windows server 2012 上安装Analysis Services
- 新版Windows 10曝光全新的Control Center
- 4.2GHz四核安装Windows 98
- 关于我之前写的修改Windows系统Dos下显示的用户名之再修改测试
- WannaCry感染了NHS苏格兰1500台Windows XP电脑
- C++ 之 Windows Visual Studio 开发环境搭建/C++第一个Hello World
- 【历史上的今天】 5 月 5 日:微软发布 Windows 98 SE ;领英上线;键盘布局的改革者
- 五角大楼怒赞Windows 10:不用都不好意思跟别人打招呼
- Windows下Phalcon的安装以及phpstorm识别phalcon语法及提示
- Windows 安装RocketMQ
- Windows 7环境下网站性能测试小工具 Apache Bench 和 Webbench使用和下载
- Windows中多线程‘饥饿’浅谈