点击上方 "
Python人工智能技术
"
关注,
星标或者置顶
22点24分准时推送,第一时间送达
后台回复「
大礼包
」,送你特别福利
编辑: 乐乐 | 来自:冰冷的希望
链接:https://blog.csdn.net/qq_39147299/article/details/132409817
上一篇:
大家好,我是Python人工智能技术
1.安装
pywinauto是一个 用于自动化Python模块 ,适合Windows系统的软件(GUI),可以 通过Pywinauto遍历窗口 (对话框)和窗口里的控件,也可以 控制鼠标和键盘输入 ,所以它能做的事情比之前介绍的pysimplegui更多
一般使用pip安装就行了
pip install pywinauto
官网文档:https://pywinauto.readthedocs.io/en/latest/
2.Application
我们要控制软件的第一件事就是启动一个Windows软件,每一个软件(进程)都是一个Application对象
实例化Application对象的时候可以传入一个backend参数,可选值为 win32(默认)和uia
win32对应的框架: MFC 、VB6、VCL、简单的 WinForms 控件和大多数旧的遗留应用程序
uia对应的框架: WinForms、WPF、商店应用程序、Qt5、浏览器
如果无法知道要测试的软件是属于哪种框架,可以使用 Inspect(对应uia) 和 Spy++ (对应win32) 看看,你看哪个显示得更全就选哪个。Inspect和Spy++需要自己安装一下
下面是Application对象的主要方法
举例,启动一个微信应用,通过进程号连接, 进程号就是在任务管理器里详细信息看到的PID
3.WindowSpecification
我们要获取窗口,一个窗口都是一个 WindowSpecification 对象,可以通过Application对象的window()方法获取,参数可以是title、 classname或者best_match等,这都可以在inspect.exe上看到,不过 需要注意的是inspect看到的Name其实对应的是window()的title参数
WindowSpecification对象常用的方法如下
举个栗子
4.元素控件
一个窗口里一般都会有各种各样的元素,比如说 按钮 (Button)、 编辑栏 (Edit)、 树状视图 (Tree View)、 复选框 (CheckBox)、 对话框 (Dialog)、 工具栏 (Toolbar)、 状态栏 (StatusBar)、 列表框 ( ListBox )、 窗格 (Pane)、 菜单 (Menu)、 菜单栏 ( MenuItem )、 静态内容 (Static)、 工具提示 (ToolTips)、 列表控件 (ListView)、 单选框 ( RadioButton )、 组合框 (ComboBox)、 选项卡控件 (TabControl)、 组框 (GroupBox)、 弹出菜单 (PopupMenu)、 头 部 (Header)等
因为控件类型太多了不能一个一个学习,但是它们都有一个 element_info 的属性,访问之后会返回一个继承于 ElementInfo 的对象(UIAElementInfo或HwndElementInfo),比较重要的属性或方法如下
这些元素除了有 element_info 可以获取一些元素的主要信息,它们还都被包装成一个Wrapper,所以也可以学一下 BaseWrapper 的常用方法和属性。其实 BaseWrapper 的方法基本上都是对 ElementInfo 进一步包装,我只列出部分方法,如下表
说明一下,每个控件元素都有对应的Wrapper,所以上面的方法也不一定都用,需要根据实际情况进行测试区分。另外,比较有用的 click_input() 和 type_keys() 这两个方法分别用于操作鼠标和键盘(输入),下面我会单独拿出来说一下
鼠标操作
鼠标点击肯定离不开点击的位置,桌面就是一个坐标,左上角为坐标原点,往右是X轴正向,往下是Y轴正向。pywinauto提供了一个mouse模块用于鼠标操作,最核心的方法是 _perform_click_input() ,不过它是一个私有方法,我们调用的是基于它的封装方法,如下表
参数说明:
参数button 的默认值都是「left」,即鼠标左键,可选值有left、right、middle、move、wheel、x
参数coords 的默认值都是元组(0, 0),元组里的两个整数分别是X、Y轴的值
参数wheel_dist 表示滚动的距离,大于0是向上滚动,小于0是向下滑动
举个栗子
键盘操作
键盘操作主要是按下键盘上的按键,相关方法在keyboard模块,最最主要的是 send_keys() 方法,第一个参数 keys 就是我们需要按下的按键,其他参数比如说with_spaces、with_tabs、with_newlines、turn_off_numlock、set_foreground、vk_packet,一看就知道作用,而且都是布尔值,此处不进行举例
pywinauto支持的完整的按键可以在官方文档查看,https://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html
下面我列举出的是一些比较常用的按键
说明:
使用按键时需要搭配大括号,比如说按下回车键是 '{ENTER}' (是字符串)
在Windows平台默认是发送虚拟按键的,以 VK_ 开头的按键,都是指虚拟按钮,如果不想使用虚拟按钮可以把 VK_ 前缀去掉,把send_keys()的 vk_packet 参数改为 False 即可
单个按键按下抬起还不够,往往需要组合键,这时候就需要修饰符了,在大括号里可以使用
down
、
up
控制按键什么时候按下和抬起,如果后面加上数字,表示按下多少次
当然,很多时候使用
down
、
up
修饰感觉不够简洁,所以pywinauto还提供了简化写法,使用
+
代替
{VK_SHIFT}
,使用
^
代替
{VK_CONTROL}
,使用
%
代替
{VK_MENU}
如果不想按下按钮,纯属想要输入纯字符串,那就需要取消转义了,注意修饰符和按钮的写法是不一样的
为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:ChartGPT与副业。想带着大家一起探索 ChatGPT和新的AI时代 。
有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这三天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。
不光是增长速度最快,我们的星球品质也绝对经得起考验,短短一个月时间,我们的课程团队发布了 8个专栏、18个副业项目 :
简单说下这个星球能给大家提供什么:
1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。
2、分享ChatGPT的使用方法、最新资讯、商业价值。
3、探讨未来关于ChatGPT的机遇,共同成长。
4、帮助大家解决ChatGPT遇到的问题。
5、 提供一整年的售后服务,一起搞副业
星球福利:
1、加入星球4天后,就送ChatGPT独立账号。
2、邀请你加入ChatGPT会员交流群。
3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。
其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !
本星球第一期原价 399 ,目前属于试运营,早鸟价 169 ,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以 更高价格加入了 。。
早就是优势。建议大家尽早以便宜的价格加入!
欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️
在 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!
你还有什
么想要补充的吗?
免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。
技术君个人微信
添加技术君个人微信即送一份惊喜大礼包
→ 技术资料共享
→ 技术交流社群
--END--
往日热文:
Python程序员深度学习的「四大名著」:
这四本书着实很不错!我们都知道现在机器学习、深度学习的资料太多了,面对海量资源,往往陷入到「无从下手」的困惑出境。而且并非所有的书籍都是优质资源,浪费大量的时间是得不偿失的。给大家推荐这几本好书并做简单介绍。
获得方式:
1.扫码关注本公众号
2.后台回复关键词:名著
▲长按扫描关注,回复名著即可获取