适用于winform程序的UI自动化实现(python+uiautomation)

适用于winform程序的UI自动化实现(python+uiautomation)

一、使用的工具和库

定位工具:inspect(提取码:kvwx)、UISpy(提取码:ab0e)
python库使用:subprocess(内置库,用于打开应用程序)uiautomation(pip install uiautomation安装)

二、原理

使用subprocess库打开应用程序,然后借助定位工具采集定位应用元素的信息,然后在定位到的元素上进行输入、点击、获取等一系列操作(通过uiautomation的方法实现)。
【定位属性一般使用:ClassName、Name、ProcessId、AutomationId】

三、定位工具的使用

简单使用,先打开需要定位的应用程序,然后打开定位工具,就可以找到当前工具的窗口信息
UISpy:
在这里插入图片描述
1、如果找不到自己的应用窗口/窗口失效。则可以先选中根目录然后点击刷新,此时会重新抓取所有的窗口
2、日常定位窗口中详细信息,可以选中鼠标操作,然后按住Ctrl此时窗口自动定位的内容就是鼠标左键的定位元素(部分情况会存在定位不到的,需要在应用窗口下一点点寻找)
在这里插入图片描述

四、代码实现

# 打开计算器进程[应用程序所在的路径]
subprocess.Popen('calc.exe')
time.sleep(2)
# 定位窗口
wc = uiautomation.WindowControl(searchDepth=1, Name='计算器')
# 设置为顶层【一般默认都是前置的可以不用设置】
wc.SetTopmost(True)
# 执行操作
wc.ButtonControl(Name='7').Click()
wc.ButtonControl(Name='加').Click()
wc.ButtonControl(Name='5').Click()
wc.ButtonControl(Name='等于').Click()
# 检查
result = wc.TextControl(AutomationId='CalculatorResults')
assert result == '12'

五、常用的uiautomation操作

		uiautomation常见的操作有:
		Click()            点击;
		
		RighClik()       右键点击;
		
		DoubleClick()	双击
		
		SendKeys()     发送字符;
		
		SetValue()      传值,一般对EditControl用;

window窗口操作

		subprocess.Popen('Name')    用进程打开程序;
		
		window.Close()            关闭窗口;
		
		window.SetActive()           使用;
		
		window.SetTopMost()       设置为顶层
		
		window.ShowWindow(uiautomation.ShowWindow.Maximize)  窗口最大化
		
		window.CaptureToImage('Notepad.png')  截图;

六、常用的uiautomation控件方法

按钮:uiautomation.ButtonControl(‘定位元素=value’)
输入框:uiautomation.EditControl(‘定位元素=value’)
单选框:uiautomation.RadioButtonControl(‘定位元素=value’)
复选框:uiautomation.CheckBoxControl(‘定位元素=value’)
下拉框:uiautomation.ComboBoxControl(‘定位元素=value’)
文本:uiautomation.TextControl(‘定位元素=value’)
表格:uiautomation.TabControl(‘定位元素=value’)
uiautomation.TableControl(‘定位元素=value’)

七、PO模式结合
实现方式:页面元素、页面 操作、用例、数据分层存储,实现多重调用
公共方法:打开应用程序、登陆
objectpage
objectoperation
testcase
testdata

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值