Uiautomation 在Windows WPF和Qt 产品上的应用
前面使用Pywinauto 对公司自研的Windows WPF和Qt进行了应用。
最近用Uiautomation 进行了试验,发现Uiautomation 比Pywinauto更加易用,更好上手。
如果是做Windows程序的自动化测试,推荐使用Uiautomation
Uiautomation相关文章:
Windows GUI自动化测试技术的比较和展望:https://blog.csdn.net/vagabond1/article/details/5648902
开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt :http://www.cnblogs.com/Yinkaisheng/p/3444132.html
Github地址:https://github.com/yinkaisheng/Python-UIAutomation-for-Windows
下载地址:https://pypi.org/project/uiautomation/#history
简单介绍下用法,详细的可以参考作者的原博客
1、程序启动:
subprocess.Popen(args='D:\Release\Higemi.exe',cwd=r"D:\Release")
2、窗口定位
cas = automation.WindowControl(searchDepth=1, AutomationId='myMainWindow', Name='Login')
3、控件定位
login=cas.ButtonControl(AutomationId ="btn_login")
4、鼠标动作
automation.Win32API.MouseClick(600,250)
automation.Win32API.MouseWheelDown(2)
5、窗口的等待
automation.WaitForExist(cas, 3) 在超时时间内寻找指定的窗口,找不到则抛出异常
项目代码如下:
import os, sys, time
import subprocess
import uiautomation as automation
from pywinauto import application
automation.ShowDesktop()
# 打开cas
subprocess.Popen(args='D:\Release\Higemi.exe',cwd=r"D:\Release")
# # 查找cas
cas = automation.WindowControl(searchDepth=1, AutomationId='myMainWindow', Name='Login')
# 可以判断window是否存在,如果不判断,找不到window的话会抛出异常
if automation.WaitForExist(cas, 3):automation.Logger.WriteLine("CAS exists now",logFile="cas.txt")
else:automation.Logger.WriteLine("CAS does not exist after 3 seconds",logFile="cas.txt")
cas.SetActive()
# # 登录
login=cas.ButtonControl(AutomationId ="btn_login")
login.Click()
# 查找病例
patientManager = automation.WindowControl(Name = 'PatientManager',AutomationId='myMainWindow')
patientManager.SetActive()
patient = patientManager.TextControl(Name = 'LI QIANG',ClassName="TextBlock",foundIndex=1)
patient.Click()
# # 进入三维重建
_3dRebuidBtn = patientManager.ButtonControl(AutomationId="_3dRebuidBtn")
_3dRebuidBtn.Click()
time.sleep(10)
lung = patientManager.ImageControl(AutomationId="lung")
lung.Click()
# 设置窗宽窗位
WL = patientManager.EditControl(AutomationId="WL")
WL.SetValue("600")
WB = patientManager.EditControl(AutomationId="WB")
WB.SetValue("1400")
w_OK = patientManager.ButtonControl(AutomationId = "w_OK")
w_OK.Click()
wwwl_preset = patientManager.ComboBoxControl(AutomationId="wwwl_preset")
wwwl_preset.Select("CT Lung")
# 选择种子点并执行
segmentation_TakePixel = patientManager.ButtonControl(AutomationId="segmentation_TakePixel")
segmentation_TakePixel.Click()
automation.Win32API.MouseClick(600,250)
automation.Win32API.MouseWheelDown(2)
automation.Win32API.MouseClick(600,350)
segmentation_Show = patientManager.ButtonControl(AutomationId = "segmentation_Show")
segmentation_Show.Click()
BarWindow = automation.WindowControl(Name= "MetroProBarWindow",AutomationId ="myMainWindow",ClassName="Window")
while automation.WaitForExist(BarWindow,3):pass
print("快速分割完成")
# 保存
save = patientManager.ButtonControl(AutomationId = "save")
save.Click()
umessageBox = automation.WindowControl(Name="UMessageBox",AutomationId ="myMainWindow",ClassName="Window")
if automation.WaitForExist(umessageBox,3):yes = umessageBox.TextControl(AutomationId ="tb_YES")yes.Click()print("保存成功")
Uiautomation 在Windows WPF和Qt 产品上的应用相关推荐
- “WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
2019独角兽企业重金招聘Python工程师标准>>> 近日微软公布了最新的WPF路线图,一片热议:对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread ...
- 使用微软WPF技术开发产品优势究竟在那里
2008年在世界经济历史上是一个不平凡的一年,在这一年中,美国的五大投资银行有两家破产.金融危机席卷全球,美国的失业率在过去的一年从4%飙升到了10%,有些城市的失业率甚至高达20%:加拿大的就业数字 ...
- C# C/S WPF 远程操作服务器上面的文件
作的时候用的是WPF,需要做一个上传附件的功能,服务器上有一个文件夹,附件都上传到里面,只知道URL路径. 文件夹是在服务器上的IIS里面(就比如说你发布一个网站,把文件夹建在网站下面,当然这个网站啥 ...
- 微软公告:Visual Basic 6 完全兼容 Windows 8 的整个产品周期
微软刚刚将其 Windows 系统对 Visual Basic 6 程序的完全兼容支持延长到了 Windows 8 的整个产品周期. Visual Basic 6 最早发售于 1998 年, 所以现在 ...
- 鸿蒙电视应用市场,任正非:鸿蒙系统已上线,未来将被应用到手机、平板、电视系列产品上...
鸿蒙系统已经完成了从面向物联网到面向智能设备的转化. 鸿蒙系统已经上线,未来将被应用到华为智能硬件系列产品上. 1月21日,时隔5年,华为创始人任正非再次亮相达沃斯世界经济论坛,在接受媒体采访时透露了 ...
- Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe
Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...
- QT FTP上传文件
QT FTP上传文件 两台电脑通过网线建立本地连接,保证网关在同一段: 服务器端打开ftp: 客户端网页测试远程访问: 客户端cmd测试远程访问: 客户端程序测试远程访问. 两台电脑通过网线建立本地连 ...
- windows下发布Qt程序
From: http://hi.baidu.com/limingfantasy/blog/item/22f6c459b8720086810a182e.html windows下发布Qt程序 2008- ...
- 从零开始在windows下使用QT根据点绘制图像
从零开始在windows下使用QT根据点绘制图像(QPainter or halcon) 前言 QT+msvc+SDK+halcon环境搭建 1 添加 .lib库文件路径 2 添加 .h 头文件 3 ...
最新文章
- python pip指令_python 常用 pip 命令合集
- mvc-3模型和数据(1)
- XenApp Farm:修改密码、退域、更改Farm
- Transformer模型总结
- 485通讯线是几芯的_小令老师说门禁| 为什么485门禁必然会取代韦根?
- IDEA——修改idea64.exe.vmoptions文件解决coding卡顿问题
- cojs EX_香蕉 题解报告
- H5页面移动端IOS键盘收起焦点错位
- D3D中材质通过D3DMATERIAL9结构说明
- 慧荣科技亮相2017纽伦堡国际嵌入式应用展览会,主推采用3D NAND的BGA SSD新产品...
- springboot MVC拓展配置
- 苹果手机如何投屏到电脑【无线有线】
- 百度网盘linux微博登录,百度网盘,微博登录
- matlab中abs函数,Matlab中的abs函数是什么意思
- 基于okhttp3依赖和gson依赖的快递查询系统
- 3D立体显示大屏幕拼接视频墙系统解决方案【转】
- control命令详解
- centos lvm卷组删卷和扩容
- 请问外贸独立站靠谱的收款工具有哪些,求推荐!?
- 解决matlab 关于警告(warning)、错误(error)、异常(exception)与断言(assert)问题总结
热门文章
- NFT支付平台接口,数字藏品支付接口如何申请?
- 2019年首款骁龙855Plus手机确认,性能配置超强,于7月23号发布
- TCP面试常见题:time_wait状态产生的原因,危害,如何避免
- oracle创建用户和表空间
- 用计算机计算应该注意什么,科学计算器使用注意事项 - 科学计算器价钱是多少_科学计算器使用方法_科学计算器使用注意事项...
- 修正闪退,Win8 Metro版VLC影音播放器下载
- 两台手机通过4g网络直接通讯_王者不卡了!手游电竞网络保障方案简析
- GPU通用计算——从Hello GPGPU开始
- 八股文C++篇(超级全)
- 苹果OTG取电协议芯片CY265