前面使用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,Qthttp://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 产品上的应用相关推荐

  1. “WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心

    2019独角兽企业重金招聘Python工程师标准>>> 近日微软公布了最新的WPF路线图,一片热议:对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread ...

  2. 使用微软WPF技术开发产品优势究竟在那里

    2008年在世界经济历史上是一个不平凡的一年,在这一年中,美国的五大投资银行有两家破产.金融危机席卷全球,美国的失业率在过去的一年从4%飙升到了10%,有些城市的失业率甚至高达20%:加拿大的就业数字 ...

  3. C# C/S WPF 远程操作服务器上面的文件

    作的时候用的是WPF,需要做一个上传附件的功能,服务器上有一个文件夹,附件都上传到里面,只知道URL路径. 文件夹是在服务器上的IIS里面(就比如说你发布一个网站,把文件夹建在网站下面,当然这个网站啥 ...

  4. 微软公告:Visual Basic 6 完全兼容 Windows 8 的整个产品周期

    微软刚刚将其 Windows 系统对 Visual Basic 6 程序的完全兼容支持延长到了 Windows 8 的整个产品周期. Visual Basic 6 最早发售于 1998 年, 所以现在 ...

  5. 鸿蒙电视应用市场,任正非:鸿蒙系统已上线,未来将被应用到手机、平板、电视系列产品上...

    鸿蒙系统已经完成了从面向物联网到面向智能设备的转化. 鸿蒙系统已经上线,未来将被应用到华为智能硬件系列产品上. 1月21日,时隔5年,华为创始人任正非再次亮相达沃斯世界经济论坛,在接受媒体采访时透露了 ...

  6. Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe

    Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...

  7. QT FTP上传文件

    QT FTP上传文件 两台电脑通过网线建立本地连接,保证网关在同一段: 服务器端打开ftp: 客户端网页测试远程访问: 客户端cmd测试远程访问: 客户端程序测试远程访问. 两台电脑通过网线建立本地连 ...

  8. windows下发布Qt程序

    From: http://hi.baidu.com/limingfantasy/blog/item/22f6c459b8720086810a182e.html windows下发布Qt程序 2008- ...

  9. 从零开始在windows下使用QT根据点绘制图像

    从零开始在windows下使用QT根据点绘制图像(QPainter or halcon) 前言 QT+msvc+SDK+halcon环境搭建 1 添加 .lib库文件路径 2 添加 .h 头文件 3 ...

最新文章

  1. python pip指令_python 常用 pip 命令合集
  2. mvc-3模型和数据(1)
  3. XenApp Farm:修改密码、退域、更改Farm
  4. Transformer模型总结
  5. 485通讯线是几芯的_小令老师说门禁| 为什么485门禁必然会取代韦根?
  6. IDEA——修改idea64.exe.vmoptions文件解决coding卡顿问题
  7. cojs EX_香蕉 题解报告
  8. H5页面移动端IOS键盘收起焦点错位
  9. D3D中材质通过D3DMATERIAL9结构说明
  10. 慧荣科技亮相2017纽伦堡国际嵌入式应用展览会,主推采用3D NAND的BGA SSD新产品...
  11. springboot MVC拓展配置
  12. 苹果手机如何投屏到电脑【无线有线】
  13. 百度网盘linux微博登录,百度网盘,微博登录
  14. matlab中abs函数,Matlab中的abs函数是什么意思
  15. 基于okhttp3依赖和gson依赖的快递查询系统
  16. 3D立体显示大屏幕拼接视频墙系统解决方案【转】
  17. control命令详解
  18. centos lvm卷组删卷和扩容
  19. 请问外贸独立站靠谱的收款工具有哪些,求推荐!?
  20. 解决matlab 关于警告(warning)、错误(error)、异常(exception)与断言(assert)问题总结

热门文章

  1. NFT支付平台接口,数字藏品支付接口如何申请?
  2. 2019年首款骁龙855Plus手机确认,性能配置超强,于7月23号发布
  3. TCP面试常见题:time_wait状态产生的原因,危害,如何避免
  4. oracle创建用户和表空间
  5. 用计算机计算应该注意什么,科学计算器使用注意事项 - 科学计算器价钱是多少_科学计算器使用方法_科学计算器使用注意事项...
  6. 修正闪退,Win8 Metro版VLC影音播放器下载
  7. 两台手机通过4g网络直接通讯_王者不卡了!手游电竞网络保障方案简析
  8. GPU通用计算——从Hello GPGPU开始
  9. 八股文C++篇(超级全)
  10. 苹果OTG取电协议芯片CY265