pywinauto,一款Win自动化利器!

news2024/11/27 18:44:18

pywinauto,一款Win自动化利器!

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即可

单个按键按下抬起还不够,往往需要组合键,这时候就需要修饰符了,在大括号里可以使用downup控制按键什么时候按下和抬起,如果后面加上数字,表示按下多少次

当然,很多时候使用downup修饰感觉不够简洁,所以pywinauto还提供了简化写法,使用+代替{VK_SHIFT},使用^代替{VK_CONTROL},使用%代替{VK_MENU}

如果不想按下按钮,纯属想要输入纯字符串,那就需要取消转义了,注意修饰符和按钮的写法是不一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1671007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NeurIPS‘24 截稿日期逼近 加拿大温哥华邀你共赴盛会

会议之眼 快讯 第38届NeurIPS24(Conference and Workshop on Neural Information Processing Systems)即神经信息处理系统研讨会将于 2024 年 12月9日-15日在加拿大温哥华会议中心举行! NeurIPS 每一年都是全球AI领域的一场盛宴,吸引着来自世界各地的顶…

软件文档-总体测试计划书(Word原件2024)

软件资料清单列表部分文档: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解决…

第九期济南科创生态大会即将盛大开启,为中小企业注入新动能

【头部财经】近日,备受瞩目的第九期济南科创生态大会即将拉开帷幕。本次大会将聚焦科技创新领域,为参会者提供一个交流合作、资源对接的优质平台。 作为一个专为中小企业打造的科技创新交流平台,济南科创生态大会一直致力于促进中小企业的发…

【VTKExamples::Rendering】第七期 TestShadows

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestShadows,并解析接口vtkRenderer,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO …

解决Android手机无法通过蓝牙给win10 PC传送文件

(一)先配对设备,正常配对就可以 (二)打开系统设置,win搜索窗口搜索“设置” (三)搜索“蓝牙” (四)打开“蓝牙和其他设备”,点击“更多蓝牙设置”…

【2024年5月备考新增】】 考前篇(2)《官方平台 - 考生模拟练习平台常用操作(一)》

软考考生常用操作说明 说明:模拟作答系统是旨在让考生熟悉计算机化考试环境和作答方式,模拟作答不保存考生作答 历史记录。考试题型、题量、分值、界面及文字内容以正式考试答题系统为准。 1 如何标记试题、切换试题 2 简答题如何查看历史记录、切换输入法 3 选做题,已作答…

C++下使用Matplotlib-cpp的一些配置

Aconda3安装使用 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/下载 切换清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ con…

自动化测试需知的4项测试工具

一般来说学自动化会建议大家先学selenium,因为最早的时候,自动化就代表selenium,进入测试行业就开始做接口测试,而且现在基本每个公司都需要接口测试。今天就和大家聊一下接口测试的工具。 一、Robot Framework 机器人框架。之所…

难以重现的 Bug如何处理

对很多测试人员(尤其是对新手来说)在工作过程中最不愿遇到的一件事情就是:在测试过 程中发现了一个问题,觉得是 bug,再试的时候又正常了。 碰到这样的事情,职业素养和测试人员长期养成的死磕的习性会让她…

04、 .java程序用 editplus 工具打开的过程及在 editplus 工具中配置 java/javac 命令的过程

EditPlus 工具的使用: 1、安装 editplus 工具的过程:其一、安装包地址:其二、安装步骤: 2、使用 editplus 工具打开 .java 程序的过程:其一、修改默认打开 .java 的工具:其二、效果展示: 3、在 …

电商平台接口自动化框架实践||电商API数据采集接口

电商数据采集接口 语言:python 接口自动化实现流程 红色为可实现/尚未完成 绿色为需要人工干预部分 自动生成测试用例模板(俩种方式二选一): mimproxy,通过浏览器代理抓包方式,访问 H5 或者 web 页面&a…

苍穹外卖Day06笔记(复习了jwt的加密解密和传递)

疯玩了一个月,效率好低,今天开始捡起来苍穹外卖~ 1. 为什么不需要单独引入HttpClient的dependency? 因为我们在sky-common的pom.xml中已经引入了aliyun-sdk-oss的依赖,而这个依赖低层就引入了httpclinet的依赖,根据依…

vue3.0(八) 监听器(watch),高级监听器(watchEffect)

文章目录 watch1 watch的用法2 watch的高级用法3 watch性能优化 watchEffect1 停止监听2 侦听多个状态3 懒执行 watch和watchEffect的区别watch和computed的区别 watch watch特性进行了一些改变和优化。与computed不同,watch通常用于监听数据的变化,并执…

深度求索推出DeepSeek-V2:经济高效的多专家语言模型

AI苏妲己 深度求索发布了DeepSeek-V2混合专家(MoE)语言模型,每百万tokens,2元人民币价格,简直便宜到令人发指(而且不是活动价格噢),可以说是继Groq以后,AI领域最惊艳的新…

PyQt:界面无边框+实现窗口最小化(任务栏图标隐藏+托盘图标显示)

一、整体实现效果 诸如WX、各种管家的桌面显示方式。窗口关闭后,往往是任务栏图标消失,保持右下角托盘图标显示,保持后台运行。双击托盘图标后,窗口显示。 二、代码实现 from PyQt5.QtWidgets import * from ato_upgrade impo…

植物ATAC-seq文献集锦(一)——基因组篇

ATAC-seq(Assay for Transposase-Accessible Chromatin with high-throughput Sequencing)是一种用于探究染色质开放性区域的技术,该技术利用Tn5转座酶接近核小体疏松区域切割暴露的DNA,获得开放的染色质区段(Open Chromatin)&…

快速判断出485从站设备是否支持MODBUS RTU无线通讯

对于变频器和仪表设备,都支持485串口通讯,那么怎么判断从站设备支持那种协议呢?通常分为两种方式去判断:1.从设备参数参看2.从设备通讯报文查看。本次文章以以台达MH300系列变频器为例。 1.从设备通讯参数查看 使用设备之前一定…

Apple store 静安·苹果店欣赏

官网: https://www.apple.com/today/Apple 亚洲第一大商店:Apple 静安零售店现已在上海开幕 静安苹果欣赏

智能体Agent笔记

智能体的定义: 1. 可以感受环境中的动态条件 2. 能采取动作影响环境 3. 能运用推理能力理解信息,解决问题,产生推断,决定动作。 我个人觉得智能体是个饼,最核心的问题是,你如何解决大模型的幻觉问题&…

【mysql】主从同步时出错,如何恢复同步

mysql主从同步出错,这个时候从服务器会停止同步服务,等待人工恢复,此时有多种方法来解决。 一、查看状态 在从服务器,登陆mysql,查询从服务器的状态: 从服务器mysql> show slave status\G 图1 可以看…