pywinauto操作笔记
pywinauto教程
1. 环境安装
2. PC端元素定位⼯具介绍及判断backend
先⽤win32试⼀试,出错,改⽤uia试⼀试。记事本⽤uia出错。
Inspect
ViewWizard
Spy++
3. 启动并创建⼀个实例对象
启动
start(self, cmd_line, timeout=app_start_timeout) # 默认超时时间为5s
app = Application(backend = 'uia').start(r"E:\Office\")
连接
app = Application().connect(process=2341)
app = Application().connect(handle=0x010f0c)
app = Application().connect(path=“D:\”)
app = Application().connect(title_re=".*Notepad", class_name=“Notepad”)
4. 窗⼝、对话框及控件元素定位⽅式
窗⼝、对话框定位
wind_1 = app.窗⼝名或类名 # 只能适应于英⽂系统
wind_2 = app["窗⼝名或类名"] #适应于⾮英⽂系统
app.window(class_name = ‘Notepad’) # 关键字 title, title_re,class_name_re等
控件定位
可以通过print_control_identifiers()这个⽅法,来获取这个窗⼝下的直接⼦控件
app["窗⼝名"]["控件名"] # 基于title定位
app.window(class_name = ’Notepad’).window(class_name = ‘#32770’) # 层级定位
app.window(class_name = ‘Notepad’).child_window(class_name = ‘#32770’)
app_window.children()[1].children()[0].children()[0] .children()[2] #定位⽤户名输⼊框控件(序号从0开始查)5. 常⽤⽅法
窗⼝⽅法
dlg.minimize()
dlg.maximize()
dlg.close()
<_show_state() #最⼤化是1,正常是0
调试定位控件
print_control_identifiers(depth = None, filename = None) #depth:打印的深度 filename:将返回的标识存成⽂件draw_outline(colour =’green’,thickness = 2)
is_dialog 判断是否为dialog
隐式等待
wait(wait_for, timeout = None, retry_interval = None) # visible,ready: visible + enable
wait_not(wait_for_not,timeout = None,retry_interval = None)
输⼊框输⼊
菜单栏
app['窗⼝名或类名'].menu_select(Edit -> Replace)
⿏标点击
pywinauto. mouse 需要导⼊此模块
move(coords=(x轴坐标,y轴坐标))
mouse.click(button='left', coords=(40, 40)) # double_click
mouse.right_click(coords=(400, 400))
click()
check() 勾选checkbox
uncheck() 不勾选checkbox
is_checked(勾选返回true,为勾选返回false,不定返回None)
get_check_state() 返回checkbox的勾选状态(0没勾选,1勾选,2不定)
键盘操作
“+”:Shift
“^”:Control
“%”:Alt
from pywinauto.keyboard import send_keys
send_keys("^a") # 全选
send_keys("{VK_RETURN}") # 回车
实例:
from pywinauto import application
app = application.Application(backend="win32") # 默认为win32,设置成‘uia’出错
app.start(")
app['Notepad'].wait('ready') # 'Notepad'为类名,⽤标题名“⽆标题 - 记事本”也可以,app.UntitledNotepad 也可以app['Notepad'].menu_select("⽂件->页⾯设置...") # 不⽤加“.click()”,已经点击,“...”不能少notepad++
app['页⾯设置']['ComboBox1'].select(4) # ComboBox1是第⼀个,ComboBox2是第⼆个,select从0开始
app['页⾯设置']['ComboBox1'].select("A5") #直接选择⾥⾯的项
app['页⾯设置']['取消'].click() # 按钮点击
app['页⾯设置']['Edit3'].set_edit_text("68") # Edit 置⽂本
app['页⾯设置']['Edit2'].type_keys("86") # Edit 输⼊按键(输⼊的插⼊到前⾯)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论