当前位置:首页 > 知识库 > 正文

0.1元一万赞平台快520ka.ccn

客服   0.1元一万赞平台快520ka.ccn  第1张 拼多多砍价dy抖音ks快手 自助商城点击进入

演示代码如下

from time import sleep
import uiautomation as auto
class Calc():
    def open_calc(self):
        #打开计算器
        desktop=auto.PaneControl(Name='任务栏')
        #点击任务栏
        desktop.Click()
        #Win+D ,显示桌面
        desktop.SendKeys('{Win}d')
        #Win+R ,打开运行界面,并输入calc,打开浏览器
        desktop.SendKeys('{Win}r')
        run_win = auto.WindowControl(Name='运行')
        run_win_edit=run_win.EditControl(ClassName='Edit',Name='打开(O):')
        run_win_edit.SendKeys("calc")
        run_win_ok=run_win.ButtonControl(ClassName="Button",Name='确定')
        run_win_ok.Click()
        sleep(3)
    def calc_auto(self):
        calc_win=auto.WindowControl(ClassName='ApplicationFrameWindow',Name="计算器")
        # 开始计算
        calc_five=calc_win.ButtonControl(Name='五')
        calc_five.Click()
        calc_five.Click()
        calc_mult=calc_win.ButtonControl(Name='乘以')
        calc_mult.Click()
        calc_one = calc_win.ButtonControl(Name='一')
        calc_one.Click()
        calc_three = calc_win.ButtonControl(Name='三')
        calc_three.Click()
        calc_four = calc_win.ButtonControl(Name='四')
        calc_four.Click()
        calc_equal= calc_win.ButtonControl(Name="等于")
        calc_equal.Click()

sleep(3) calc_win_close_btn = calc_win.ButtonControl(AutomationId='Close') calc_win_close_btn.Click() if __name__ == '__main__': calc = Calc() calc.open_calc() calc.calc_auto()

UIautomation环境搭建

本文的使用的是Python 3.9的版本,Python的安装和配置不是本文的内容,故不描述,可以参考网上其他教程,Python安装完成后,使用pip install uiautomation来安装uiautomation框架深度技术 windows xp sp3 完美精简版,如下所示:

C:\Users\Administrator>pip install uiautomation
Collecting uiautomation
  Downloading uiautomation-2.0.15-py3-none-any.whl (159 kB)
     |████████████████████████████████| 159 kB 5.8 kB/s
Collecting comtypes>=1.1.10
  Downloading comtypes-1.1.10.tar.gz (145 kB)
     |████████████████████████████████| 145 kB 133 kB/s
Using legacy 'setup.py install' for comtypes, since package 'wheel' is not installed.
Installing collected packages: comtypes, uiautomation
    Running setup.py install for comtypes ... done
Successfully installed comtypes-1.1.10 uiautomation-2.0.15

界面元素定位

由于我们要操作界面,所以获取界面的元素,比如按钮、文本框、下拉框等等,需要进行元素定位,这个过程我们也形象的称为"找对象",只有在准确的获取到元素的位置后,才能进行像点击、输入文本的操作,我们获取界面元素的方式有如下几种,可以结合起来使用。

第一种:通过UIautomation框架自带的脚本工具automation.py来获取元素定位,安装pip install uiautomation后,在Python的Scripts(比如C:\Python37\Scripts)目录中会有一个文件automation.py, 或者使用源码根目录里的automation.py。automation.py是用来枚举控件树结构的一个脚本,运行automation.py遍历控件时,支持下列参数:

-t int value, 延迟时间time秒,延迟指定秒数再遍历控件,
-r, 从树的根部(root: Desktop)遍历,如果不指定,从当前窗口遍历
-d, int Value, 遍历控件树的的深度depth,如果不指定,遍历整个树,和-c一起使用时,可以为负值
-f, 遍历焦点focus控件,如果不指定,从当前窗口遍历
-c, 遍历光标下的控件,如果不指定,从当前窗口遍历,如果同时指定-d, -d可以为负值,比如-d-2表示从光标下控件向上找到两层父控件,遍历这个父控件
-a, 获取光标下控件及其所有祖先(ancestor)控件
-n, 显示控件的完整name, 如果不指定,只显示前30个字符

用法示例

automation.py –t3, 3秒后遍历当前窗口所有控件

automation.py –d2 –t3, 3秒后遍历当前窗口前三层控件 automation.py –r –d1 –t0 -n, 0秒后遍历root的第一层子控件,并显示控件完整名称 automation.py –c –t3, 3秒后遍历鼠标光标下面的控件信息 automation.py –c –t3 -d-2, 3秒后遍历鼠标光标下面的控件向上两层的父控件

第二种:使用元素定位工具,比如spy++、Inspect.exe、UIspy.exe,Microsoft Spy++是一个查看Windows操作系统的窗口、消息、进程、线程信息的工具,简单易用,功能强大;Inspect.exe也是一款控件识别工具,这两款工具都可在网络上下载,也可以通过关注【郑大钱呀】公众号,回复元素定位工具可同时获取三款工具的下载链接。

常用的控件类

由于一个界面中有很多种控件类型,所以在automation中不同的控件类型对应着不同的控件类,具体什么控件使用哪种控件类型,可以通过元素定位工具中的ControlType来判断深度技术 windows xp sp3 完美精简版,示例如下:

上图中的控件,就是使用EditControl这个控件类,automation支持如下的控件类:

控件类支持的参数

searchDepth和Depth的区别searchDepth在指定的深度范围内(包括1~searchDepth层中的所有子孙控件)搜索第一个满足搜索条件的控件Depth只在Depth所在的深度(如果Depth>1,排除1~searchDepth-1层中的所有子孙控件)搜索第一个满足搜索条件的控件。

常用方法窗口相关方法

#查找窗口中的程序;
window = WindowContrl(searchDepth,ClassName,SubName) 
#激活窗口;
window.SetActive()   
#窗口置顶;
window.SetTopMost() 
#窗口居中
window.MoveToCenter()
#判断此窗口是否存在;
window.Exists(maxSearchSeconds)
#关闭窗口;
window.GetWindowPattern().Close()
#窗口最大化;
window.ShowWindow(uiautomation.ShowWindow.Maximize)
#窗口最大化;
window.Maximize()

#截图; window.CaptureToImage(‘Notepad.png’) # 切换窗口 window.SwitchToThisWindow() #打开控制台 automation.GetConsoleWindow() #显示桌面; automation.ShowDesktop()

程序关闭与打开相关方法

import subprocess,os
# 打开程序,filepath程序所在文件路径
subprocess.Popen('filepath')
#杀死程序进程
os.popen('taskkill /IM xxx.exe /F')

组合框相关方法

#查找下拉框
combox=ComboBoxControl(searchFromControl,AutomationId)
#点击组合框
combox.click()
#选择需要的选项;
combox.Select(“name”)
#展开
combox.Expand()
#折叠
combox.Collapse()

鼠标事件

#单击
Click()
#双击
DoubleClick()
#右键点击
RighClik() 
#移动
MoveTo()
# 按压左鼠标
PressMouse()
#释放左鼠标
ReleaseMouse()
#按压右鼠标
RightPressMouse()
#释放右鼠标
RightReleaseMouse()

键盘事件

SendKeys("内容或按键")

sendKeys支持输入文本,也支持按键,包括组合键,具体如下:

延时等待

# 显示等待
window.SendKeys('{Ctrl}c', waitTime = 0.1) 
#隐式等待
uiautomation.uiautomation.TIME_OUT_SECOND = 10  

滚动条

#滚动滚动条,直到文本在窗口可见为止
ScrollIntoView()

日志

uiautomation.Logger.ColorfullyWrite('运行"automation.py -h"显示帮助\n\n')

粘贴板

#获取剪切板的文本
GetClipboardText()

控件判断相关方法

#判断控件存在
automation.Exists()
#设置一个时间内查找到控件
automation.WaitForExist()
#重新查找控件
automation.Refind()
#判断控件是否消失
automation.Disappears()
#判断控件是否可用
element.IsEnabled

控件矩形坐标

rect = control.BoundingRectangle
BoundingRectangle#return rect.left, rect.top, rect.right, rect.bottom
rect.width() #宽度
rect.height()#高度

截图方法

CaptureToImage()

结尾

本期的内容就到这里了,如有不足之处还请大家多多指正,欢迎大家留言、关注、转发、收藏,感谢爱摄影的工程师的文档整理。

发表评论

最新文章

推荐文章