自动化测试实操案例详解 | Windows应用篇

简介: 自动化测试实操案例详解 | Windows应用篇

前言



之前有同学留言说想看Windows应用的自动化,那么今天我们就用1个简单的例子,带大家一起来看一下Windows应用的自动化究竟有哪些坑。


不过在此之前,希望大家能认真看一下 “如何连接Windows应用窗口” 的教程,里面详细描述了多种连接Windows窗口的模式。


因为桌面应用的多样化,IDE连接各种Windows窗口也会出现各种各样的问题,同学们在连接Windows窗口时如果出现问题,比如 无法嵌入、连接后闪退、连接后窗口被拉伸 等等,建议同学们多尝试几种连接方式,总会找到一种比较好的连接方式。


另外,因为同学们平常多使用移动设备进行测试,换成测试Windows应用时,很容易把一些移动设备才有的接口用到Windows应用上面,导致接口失效,达不到预期效果的情况,下文我们也会详细跟大家讲述一下,帮助大家避坑。


实操



① 需求


我们以网易云音乐的Windows客户端为例,实现在网易云音乐中搜索“薛之谦”,然后找到他的歌单排名,将排名前10的歌曲加入“我喜欢的音乐”列表,之后删除搜索框的内容,最后回到网易云音乐的首页。


② 在IDE中连接网易云音乐的应用窗口


为防止其它应用窗口干扰连接,我们 在桌面上只留下IDE窗口和待测的网易云音乐窗口 。然后我们在Windows窗口连接里选择 “选定窗口”,再单击选中网易云音乐的窗口,嵌入之后发现,网易云音乐的窗口被严重拉伸:


网络异常,图片无法展示
|


所以我们再尝试一下另外一种嵌入方法,“搜索窗口”。点击“搜索窗口”,在弹出的窗口列表中,选择网易云音乐的窗口,再点击连接:


网络异常,图片无法展示
|


发现可以正常嵌入,所以以后我们可以使用搜索窗口这种模式,来嵌入网易云音乐的Windows窗口。


③ 需求分析和预期效果


  • 点击搜索框
  • 输入“薛之谦”
  • 进入薛之谦的歌曲列表
  • 按排名顺序播放排名前10的歌曲
  • 将当前播放的歌曲加入“我喜欢的音乐”列表
  • 再次点击搜索框,全选文本然后删除
  • 返回应用首页


网络异常,图片无法展示
|


④ 实现的代码


网络异常,图片无法展示
|


知识点分析



① 模拟键盘/鼠标操作


AirtestIDE对普通Windows应用程序的测试支持,主要 依靠图像识别框架(Airtest)进行位置定位,使用 pywinauto 的操作接口进行模拟操作


最常见的就是模拟键盘/鼠标操作了。上述案例中,我们主要使用了模拟键盘操作,帮助我们在应用上输入关键词、使用快捷键以及进行全选删除等操作。


dev = device()
# 输入搜索词,等同于 text("薛之谦")
dev.keyboard.SendKeys("薛之谦")
# 删除输入框的内容,等同于 keyevent("^a"),keyevent("{BACK}")
dev.keyboard.SendKeys("^a")
dev.keyboard.SendKeys("{DELETE}")
复制代码


其中 '^' 等同于 {VK_CONTROL},所以 "^a" 代表的是 "ctrl+a" ,另外 pywinauto.keyboard 这个模块的详细内容可以参考此链接:pywinauto.readthedocs.io/en/latest/c…


模拟鼠标操作在上述示例中没有涉及,但它的基本用法与 pywinauto.keyboard 模块是相似的,给大家举个简单的例子,模拟鼠标的右键点击操作:


网络异常,图片无法展示
|


dev = device()
dev.mouse.right_click(coords=(1180, 145))
复制代码


pywinauto.mouse 模块的内容可以参考此链接:pywinauto.readthedocs.io/en/latest/c…


② 在Windows应用上使用keyevent


之前很多同学跟我们反馈过这样的问题,为什么他们在Windows应用上输入各种 keyevent 之后,都只是把键码输入到文字框中,而没有实现键码的效果呢?


网络异常,图片无法展示
|


如上图所示,我们的预期是删除输入框的文字,但实际效果是把键码一个个输入到了输入框中。其实原因就是我们文章开头所说的,这个键码是应用在安卓平台上的,照抄到Windows平台是不适用的:


网络异常,图片无法展示
|


而Windows平台的键码,我们可以参考 pywinauto.keyboard 这个模块给出的键码合集:


网络异常,图片无法展示
|


③ 多种截图技巧


实操示例中,我们使用了多条截图语句帮助我们在网易云音乐上进行定位。其中有几个截图的小技巧想分享给大家:


第一点,截图的时候,希望大家 尽量减少截入过多的空白背景 ,空白背景过多容易导致特征点稀少,进而出现截图识别位置错误的问题。


第二点,截图并不一定是越小越精准。当画面中存在多个相似的目标截图时,我们需要灵活地加入一些辅助内容,帮助我们顺利定位到目标。就拿上述示例来说,输入“薛之谦”后,我们想要点击下拉列表的第二个薛之谦,但是列表中有很多个干扰元素:


网络异常,图片无法展示
|


此时,细细地去抠含有薛之谦三个文字的截图就非常不明智了,因为你很难确保程序最终帮你匹配到列表中哪一个位置。但我们尝试换一下思路,适当地将截图扩大一些,增加更多的特征点,让我们的点击目标依然处于截图中心 ,不就可以更准确地定位到我们的目标了吗?


网络异常,图片无法展示
|


最后一点,巧用 target_pos 帮助我们点击截图的不同位置 。默认情况下,程序在画面上找到截图目标后,会点击截图的中心位置,但实际操作中,我们可能需要点击截图的右下角、中心偏右位置等等,这时候我们只需要设置截图 target_pos 的值即可(取值范围1~9)。


网络异常,图片无法展示
|


小结



今天的教程内容就到这里啦

相关文章
|
1天前
|
机器学习/深度学习 传感器 人工智能
高效能计算机视觉技术在工业自动化中的应用与发展
随着工业自动化的迅速发展,高效能计算机视觉技术正成为关键驱动力。本文探讨了计算机视觉在工业自动化中的重要性,以及其应用和未来发展趋势。通过深入分析现有技术和案例研究,展示了计算机视觉如何提升生产效率、质量控制和安全性,并展望了其在智能制造中的潜力。 【7月更文挑战第13天】
6 1
|
6天前
|
JavaScript 前端开发 测试技术
自动化测试在API测试中的深度应用与实践
【7月更文挑战第8天】自动化测试在API测试中的应用极大地提高了测试效率和质量,为软件的快速迭代和持续交付提供了有力保障。通过合理选择测试工具、制定清晰的测试计划并遵循最佳实践,我们可以充分发挥自动化测试的优势,为软件产品的稳定性和可靠性保驾护航。
|
4天前
|
机器学习/深度学习 敏捷开发 人工智能
现代软件测试技术的演进与应用
随着软件行业的快速发展,软件测试技术也在不断演进和创新。本文探讨了现代软件测试技术的最新趋势和应用,包括自动化测试、持续集成与持续交付、AI在测试中的应用等方面。通过分析这些技术的发展,我们可以更好地理解如何提高软件质量、加速交付,并提升开发团队的效率和创新能力。 【7月更文挑战第10天】
10 3
|
3天前
|
Windows
【Windows】 Win10下报错:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联
【Windows】 Win10下报错:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联
10 1
|
4天前
|
jenkins 测试技术 持续交付
探索自动化测试框架在软件开发中的应用
【7月更文挑战第10天】随着软件行业的快速发展,高效、可靠的软件产品成为企业竞争的核心。自动化测试框架作为提升软件质量与开发效率的关键技术,其在软件开发过程中扮演着越来越重要的角色。本文将深入探讨自动化测试框架的应用,从其定义、优势到具体实施策略,旨在为软件开发团队提供一套完整的自动化测试解决方案。通过实际案例分析,我们将展示如何有效整合自动化测试框架到软件开发生命周期中,以及如何克服实施过程中可能遇到的挑战。
|
9天前
|
运维 监控 容灾
实现Java应用的高可用与自动化运维
实现Java应用的高可用与自动化运维
|
1天前
|
监控 Python
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
14 3
|
2天前
|
机器学习/深度学习 运维 监控
智能化运维:机器学习在故障预测和自动化修复中的应用
随着信息技术的迅猛发展,企业对运维工作的效率和准确性要求越来越高。传统的运维模式已难以应对日益复杂的系统环境和数据量。本文将探讨如何利用机器学习技术提升运维工作的智能化水平,实现故障的早期预测和自动化修复,从而减少系统停机时间,提高企业运营效率。通过分析机器学习在运维领域的应用实例,揭示其在实际工作中的有效性和潜力。
10 0
|
6天前
|
运维 Prometheus 监控
「架构」云上自动化运维及其应用
企业在云上采用自动化运维,通过Prometheus+Grafana实现监控,Ansible进行配置管理,Jenkins+GitLab+SonarQube支持CI/CD,提升效率,降低成本。关键指标包括系统可用性、故障恢复时间等。通过自动化监控、配置管理和持续集成/部署,保证服务稳定性,促进快速迭代,确保市场竞争力。持续改进与培训是维持领先的关键。
13 0
|
9天前
|
敏捷开发 监控 Devops
探索自动化测试的利剑:持续集成与持续部署(CI/CD)在软件测试中的应用
在软件开发的快速迭代中,传统的手动测试方法已经无法满足效率和质量的双重需求。本文将深入探讨如何通过实施持续集成(CI)和持续部署(CD)来优化自动化测试流程,提升软件交付速度及质量保证水平。我们将分析CI/CD在测试中的关键作用,并通过实际案例数据展示其对提高测试覆盖率、缩短反馈周期和增强开发协作的积极影响。
27 0