自动化工具 请教关于 Windows 应用的自动化测试方式

王小明 · 2021年06月03日 · 最后由 Vin 回复于 2021年06月08日 · 3974 次阅读

👀
看了 2020 年精彩盘点,发现好几处有很多人提到 airtest 的,最近我正好在接触这个工具,所以想求教一些问题
由于很多东西都是第一次接触,所以问题可能比较蠢,请见谅☺

  1. 应用是 Windows 上的,QT 开发的客户端并且内嵌 web,QT 开发的客户端貌似不能通过 spy++ 定位里面的控件,所以我选择的是图像识别的方式完成自动化。
    想问下有没有其他方式完成前端的自动化测试,或者其他能定位到控件的工具?

  2. 选 airtest 主要还是它截图生成代码特方便,而且有录制 selenium 脚本的功能,准备用这种方式去测试内嵌 web。
    用链接在浏览器打开内嵌网页的测试方式,能不能打到测试目的,会不会出现浏览器内没问题,内嵌出现异常?如果这种方式行不通,是不是内嵌 web 也只能通过图像识别的方式去做自动化了

  3. 由于这个应用的功能模块还是比较多的,所以想最终的形式是做成只需配置用例参数即可运行,给其他 QA 小伙伴使用,现在能实现了。但即便把应用拆分,每个人负责的模块还是挺多的,我已经自定义了 airtest 的日志文件,重新整理了日志目录和内容,每个模块一个 log,html 内按照模块名重命名,虽然易于查询,但将来全部应用起来以后,量可能很大,一个模块一个 html 的查通过率应该会很蛋疼吧。所以我想这样解决,新建一个.log,在每个模块的 log.txt 内找到报错将含有报错的日志统一放到新建的.log 内,然后导出一份只含有报错导致中断的日志,并且注明是那个模块,但问题是,我发现 airtest 中的识别图像是否存在的这条用例即便通过也会报 NotFound 的错,而且内容和中断的 NotFound 的日志内容一毛一样,虽然问题不大,但心里发毛。
    所以想请教下,其他使用 Airtest 的小伙伴有没有更好的方式处理日志,或者直接不用 airtest 提供的日志,有没有自己打印的

感谢

共收到 14 条回复 时间 点赞

你这算好的,我也是在 windows 上面 QT 软件,使用了很多东西,定位软件 spy++ 不行的话用 WinAppDriverUIRecorder,这个软件还是可以的,还有一个微软的 in 什么的,然后我用 python 中的 pywinauto+lackey,发现还是不好用,最近在研究 Ranorex

小王 回复

我去看了下你说的几个软件😹 感觉功能都大同小异,airtest 本身功能肯定是不够的,我主要是看上他截图自动保存方便,我也是掺着 pywinauto 还有一些其他库一起用的,WinAppDriverUIRecorder 这个软件用不了,it 管的太严了不让用开发者设置😾

先帮 1 楼回答下,是微软的 inspect.exe 和 UISpy.exe

autoit~~~

图像识别的方式比较通用,而且不会入侵应用

正好我们的产品形态也是 qt 客户端内嵌 chrome,目前自动化是用 python 做的,用到了 airtest 的图像识别工具类,还有腾讯开源的 qt4c+qt4w 的元素定位工具类;
建议还是用客户端做自动化,因为自动化用例可能会包括应用安装启动等等,还有就是要确认下 web 有没有调用 qtAPI 的功能,这部分功能在浏览器内无法覆盖到;
第三个问题是想要收集测试结果么,引入测试框架应该可以做到吧,比如 unittest,pytest;

Vin 回复

感谢,悟了

王小明 回复

那就惨喽

Vin 回复

大佬,你们 QT4C 和 QT4W 俩个类中间定位方式是什么,比如说是路径,还是使用的 Ranorex 的那种 XPath

Thirty-Thirty 回复

感谢感谢

完全可以用 pytest + allure + airtest 图片识别模块 自己搭一个,报告好看,还灵活。

小王 回复

用的 XPath,具体可以看下官方文档 https://qt4c.readthedocs.io/zh_CN/latest/index.html

Vin 回复

大佬,你的代码能不能让我看看啊,QT4c 我使用他那个计算器的例子都能出错,能不能看看你是怎么做的

小王 回复

那个 demo 在 win10 上跑不了,元素定位会失败,我直接用我们的产品做的 demo,主要操作的还是内部的 web 页面;留个 WX 给你吧:L_vin0502

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册