首页 > 系统相关 >windows 桌面GUI自动化-4. pywinauto 操作窗口控件child_window()

windows 桌面GUI自动化-4. pywinauto 操作窗口控件child_window()

时间:2023-08-22 11:55:31浏览次数:42  
标签:control 控件 title windows pywinauto Button window child type

前言

桌面应用的操作都是基于控件操作,先找到对应的窗口,基于操控查找框架即可操作了。

查看窗口控件

先学会如何查看窗口框架,可以用inspect.exe 查看窗口的层级结构

以打开的记事本为例

也可以通过print_ctrl_ids()方法 (另外一个print_control_identifiers() 功能一样)查看当前窗口下的控件

from pywinauto import Application
import time

app = Application('uia').start("notepad.exe")
win = app.window(title_re="无标题 - 记事本")
# 获取当前窗口下控件
print(win.print_ctrl_ids())

结果如下

Dialog - '无标题 - 记事本'    (L397, T290, R1906, B1054)
['Dialog', '无标题 - 记事本', '无标题 - 记事本Dialog']
child_window(title="无标题 - 记事本", control_type="Window")
   | 
   | Edit - '文本编辑器'    (L405, T341, R1898, B1046)
   | ['Edit']
   | child_window(title="文本编辑器", auto_id="15", control_type="Edit")
   |    | 
   |    | ScrollBar - '垂直滚动条'    (L1881, T341, R1898, B1029)
   |    | ['ScrollBar', '垂直滚动条', '垂直滚动条ScrollBar', 'ScrollBar0', 'ScrollBar1']
   |    | child_window(title="垂直滚动条", auto_id="NonClientVerticalScrollBar", control_type="ScrollBar")
   |    |    | 
   |    |    | Button - '上一行'    (L1881, T341, R1898, B358)
   |    |    | ['Button', '上一行Button', '上一行', 'Button0', 'Button1']
   |    |    | child_window(title="上一行", auto_id="UpButton", control_type="Button")
   |    |    | 
   |    |    | Button - '下一行'    (L1881, T1012, R1898, B1029)
   |    |    | ['Button2', '下一行', '下一行Button']
   |    |    | child_window(title="下一行", auto_id="DownButton", control_type="Button")
   |    | 
   |    | ScrollBar - '水平滚动条'    (L405, T1029, R1881, B1046)
   |    | ['ScrollBar2', '水平滚动条', '水平滚动条ScrollBar']
   |    | child_window(title="水平滚动条", auto_id="NonClientHorizontalScrollBar", control_type="ScrollBar")
   |    |    | 
   |    |    | Button - '左移一列'    (L405, T1029, R422, B1046)
   |    |    | ['Button3', '左移一列Button', '左移一列']
   |    |    | child_window(title="左移一列", auto_id="UpButton", control_type="Button")
   |    |    | 
   |    |    | Button - '右移一列'    (L1864, T1029, R1881, B1046)
   |    |    | ['Button4', '右移一列Button', '右移一列']
   |    |    | child_window(title="右移一列", auto_id="DownButton", control_type="Button")
   |    | 
   |    | Thumb - '调整框大小'    (L1881, T1029, R1898, B1046)
   |    | ['Thumb', '调整框大小Thumb', '调整框大小']
   |    | child_window(title="调整框大小", control_type="Thumb")
   | 
   | TitleBar - ''    (L421, T293, R1898, B321)
   | ['TitleBar']
   |    | 
   |    | Menu - '系统'    (L405, T298, R427, B320)
   |    | ['系统', '系统Menu', 'Menu', '系统0', '系统1', 'Menu0', 'Menu1']
   |    | child_window(title="系统", auto_id="MenuBar", control_type="MenuBar")
   |    |    | 
   |    |    | MenuItem - '系统'    (L405, T298, R427, B320)
   |    |    | ['系统2', '系统MenuItem', 'MenuItem', 'MenuItem0', 'MenuItem1']
   |    |    | child_window(title="系统", control_type="MenuItem")
   |    | 
   |    | Button - '最小化'    (L1759, T291, R1806, B321)
   |    | ['Button5', '最小化Button', '最小化']
   |    | child_window(title="最小化", control_type="Button")
   |    | 
   |    | Button - '最大化'    (L1806, T291, R1852, B321)
   |    | ['Button6', '最大化Button', '最大化']
   |    | child_window(title="最大化", control_type="Button")
   |    | 
   |    | Button - '关闭'    (L1852, T291, R1899, B321)
   |    | ['Button7', '关闭', '关闭Button']
   |    | child_window(title="关闭", control_type="Button")
   | 
   | Menu - '应用程序'    (L405, T321, R1898, B340)
   | ['应用程序', 'Menu2', '应用程序Menu']
   | child_window(title="应用程序", auto_id="MenuBar", control_type="MenuBar")
   |    | 
   |    | MenuItem - '文件(F)'    (L405, T321, R457, B340)
   |    | ['文件(F)', 'MenuItem2', '文件(F)MenuItem']
   |    | child_window(title="文件(F)", control_type="MenuItem")
   |    | 
   |    | MenuItem - '编辑(E)'    (L457, T321, R510, B340)
   |    | ['编辑(E)MenuItem', '编辑(E)', 'MenuItem3']
   |    | child_window(title="编辑(E)", control_type="MenuItem")
   |    | 
   |    | MenuItem - '格式(O)'    (L510, T321, R566, B340)
   |    | ['格式(O)', '格式(O)MenuItem', 'MenuItem4']
   |    | child_window(title="格式(O)", control_type="MenuItem")
   |    | 
   |    | MenuItem - '查看(V)'    (L566, T321, R620, B340)
   |    | ['查看(V)MenuItem', 'MenuItem5', '查看(V)']
   |    | child_window(title="查看(V)", control_type="MenuItem")
   |    | 
   |    | MenuItem - '帮助(H)'    (L620, T321, R675, B340)
   |    | ['帮助(H)', 'MenuItem6', '帮助(H)MenuItem']
   |    | child_window(title="帮助(H)", control_type="MenuItem")
None

编辑框输入内容

我们想在编辑器输入内容,可以先查看编辑区的属性

对应我们上面看到win.print_ctrl_ids() 输出的内容

   | Edit - '文本编辑器'    (L405, T341, R1898, B1046)
   | ['Edit']
   | child_window(title="文本编辑器", auto_id="15", control_type="Edit")

set_text()在编辑器输入:hello world

from pywinauto import Application

app = Application('uia').start("notepad.exe")
win = app.window(title_re="无标题 - 记事本")

# 获取当前窗口下控件
# print(win.print_ctrl_ids())

# 输入内容
win.child_window(title="文本编辑器").set_text("hello world")

也可以用中括号的方式操作控件

win["Edit"].set_text("hello world")

标签:control,控件,title,windows,pywinauto,Button,window,child,type
From: https://www.cnblogs.com/yoyoketang/p/17648190.html

相关文章

  • Windows 使用vscode 下载编译opencv
    1.下载opencv源码.下载地址:https://opencv.org/releases/2.下载mingw这里的安装版本需要注意下,需要安装posix线程版本,不然opencv编译的时候会报错x86_64-12.2.0-release-posix-seh-rt_v10-rev1解压后配置环境变量就行下载地址如下:https://github.com/niXman/mingw-builds-b......
  • LDAP:如何在windows系统下安装LDAP及连接测试
    1、LDAP介绍LDAP是一个基于X.500标准的轻量目录访问协议,与X.500不同,LDAP协议支持TCP/IP连接。全称为LightweightDirectoryAccessProtocol(轻量目录访问协议),是用户、设备和客户端与目录服务器通信的标准协议。LDAP协议帮助用户对IT资源进行身份验证和授权,这些资源包括服务器、应......
  • 给nginx加个认证_windows
     目的:用于设备HTTP特征库升级,需要HTTP服务器支持wget。详情如下: 设备后台使用wget命令访问HFS工具的HTTP服务,什么都没有获取到 而设备后台使用wget命令访问nginx工具的HTTP服务,可以获取到文件所以需要使用支持wget的服务器,比如nginx,来提供HTTP服务,用于设备特征库HTTP......
  • 资讯_Windows 8笔记本电脑关机后电源灯要亮一段时间,是否正常?
    Windows8笔记本电脑关机后电源灯要亮一段时间,是否正常故障现象:随着Windows8的普及,多次遇到用户反馈安装Windows8的笔记本在执行关机动作后,屏幕关闭之后电源等指示灯还要亮几十秒,甚至几分钟不等。——此现象其实是由于Windows8的混合关机特质所致,并不属于故障的范畴。原因分析:在W......
  • [Microsoft Azure] Azure VM Windows操作系统首选语言设置(英文-中文)
    本文将介绍如何在MicrosoftAzure虚拟机的Windows操作系统中设置首选语言,将其从英语更改为中文。我们将详细介绍设置步骤,帮助用户轻松实现语言更改。在使用MicrosoftAzure虚拟机(VM)时,您可能需要将操作系统的首选语言更改为中文。本文将指导您完成这一过程,确保您在Azure......
  • 控件背景颜色设置为透明的方法
    引言在项目开发中,有时需要将控件的背景颜色设置为透明,比如label控件。那么,如何将控件的背景颜色设置为透明呢?是否只需将控件的BackColor属性设为Transparent即可呢?答案是否定的。想要解决这个问题,首先要了解在C#中什么叫做透明。this.TransparencyKey=Color.Red;this......
  • 【Windows 11】安装 Android子系统 和 Linux子系统
    本文使用电脑系统:文章目录一、安卓子系统1.1安装WSA1.2使用二、Linux子系统2.1安装WSL以及WSL相关概念2.2安装一个Linux发行版2.21从MicrosoftStore安装2.22用命令安装2.23拓展三、拓展3.1存储位置3.2虚拟化技术3.3Windows虚拟内存3.3wsl帮助文件一、安卓子系......
  • windows 桌面GUI自动化-2. pywinauto 启动指定应用程序
    前言pywinauto可以启动电脑自带的应用程序,也可以启动直接安装的应用启动电脑自带的应用程序上一篇环境准备,可以启动记事本了frompywinauto.applicationimportApplication#启动记事本app=Application(backend="uia").start("notepad.exe")通过start()方法指定exe......
  • Qt编写网易云界面 (2) -----搜索栏及播放控件
    今天主要实现网易云界面的下面一行播放器内容,并且完善了搜索框功能,效果如图:播放音乐用的是Qt原身的内置播放,如果以后学了FFmpeg,可以回来重构一下这部分代码,搜索框等也是写死了的,后期可以换成从服务器上查询,当然目前这个项目大多部分都是写死的,只是为了快速熟悉一下Qt开发。主页......
  • 在windows上安装Apache Kafka的详细步骤
    在Windows上安装ApacheKafka的步骤如下:步骤1:下载和解压1.打开ApacheKafka的官方网站:https://kafka.apache.org/downloads2.在下载页面下方找到“Binarydownloads”,找到最新版本的Kafka,点击下载。3.下载完成后,解压压缩包到你想要安装的目录。步骤2:配置环境变量1.打开系......