Python 请问一下大家,客户端做 UI 自动化测试有没有好的方案

小小Prcc · 2020年07月29日 · 最后由 Vin 回复于 2020年09月01日 · 3023 次阅读

我们公司现在产品是基于 WPF 框架完成的 Windows 客户端,因为大部分功能都是表单填写,工作重复度很高,我就想用 Python 来实现 UI 自动化。
但是用 pywinauto 打印控件列表一直报 “pywinauto.findwindows.ElementNotFoundError” 错误,Spy++ 也只能识别到客户端外层的窗口,识别不到里面的子控件。
用 pyautogui 又觉得图像识别有准确度问题。
所以想请教大家,有没有什么好的方法识别客户端里的控件来完成自动化,或者是因为自定义控件导致识别不了,有没有更精准的图片识别模块来配合 pyautogui 进行自动化?
还望各位不吝赐教 谢谢。
pywinauto 代码如下:

from pywinauto.application import Application
import win32gui

handle = win32gui.FindWindow(None,'医院感染信息管理系统7.0')

app = Application(backend='uia').connect(handle = handle)

wind = app.window(title_re="医院感染信息管理系统7.0")

wind.print_control_identifiers()
共收到 29 条回复 时间 点赞
西窗 回复

你好 我最后还是用的 pywinauto + pytest 来做的 UI 自动化,pywinauto 是用程序的 AutomationId+TitleName+ClassName 配合识别的,识别精准度还是可以,我们程序是 UIA 的,试了试 Appium+WinAppDriver,但识别效果不理想(可能是我用法问题),然后 pyautogui 和 airtest 的图像识别截图太繁琐而且精准度有待观察,你可以参考一下☕

AIR神神 回复

我试过的,也是基于图片的,就是担心精确度的问题

appium 目前也支持了 window、mac os 的客户端了,兼容性效果咋样,靠你自己去试了

收藏一下,我们公司主要产品也是 Win 客户端,有什么好的方案正好学习一下

残枫 回复

我看看,请问是需要配合 WinAppDriver 吗?

西窗 回复

☕ ☕

WPF 的话,你可以试下 winium---是的,那个和 selenium 一个套路的自动化测试服务,配合 inspector.exe 食用更佳,你可以使用 python 编写或者 java,groovy。

Allen.liu 回复

谢谢,我去试试☕

客户端的话 Ranorex 有可能是最优解,或者试试 uibot 这类的东西

UFT 或是一个不错的选择。

YueChen 回复

谢谢,我看一下

sky 回复

谢谢 我去了解下☕

建议用 Ranorex 试试看,自身拥有比较好的控件识别。另外使用 C# 实现。也比较简单。还可以录制。
不过 Ranorex 收费,并且遇到问题时,国内很难查到对应解决办法,需要到对应的社区才好。

DreamToHaHa 回复

哦哦 但是只能用 C# 和.NET 吧?有点尴尬

小小Prcc 回复

嗯,传说较早之前的版本是支持 python 项目。不过也没见过。

好用必须得是 Ranorex Studio,没有之一

现在不流行用 QTP 了么

airtest 试试可行否

小小Prcc 回复

好的,我参考试试。之前试了 airtest,在我这儿精准度还可以,但确实有点繁琐;Ranorex 倒是还不错,方便,可以直接录制,可惜要收费。

楼主你还,pywinauto 有没有比较好的参考文档推荐一下,在网上找了下,感觉都比较乱

小小Prcc 回复

感谢~😁

小小Prcc 回复

大佬最后选了什么?我试了几种方案各有优劣,有点纠结

MarvinWu 回复

谢谢,我看一下哈☕

airtest 呢

槽神 回复

请问这个还需要学 BASIC 语言吗?

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