当前位置:   article > 正文

pywinauto模块 窗口自动化操作相关_pyawinauto处理选项卡窗口

pyawinauto处理选项卡窗口

相关链接

文档:https://pywinauto.readthedocs.io/en/latest/index.html
资料:https://www.cnblogs.com/programer-xinmu78/p/10661257.html

流程分析

一、实例化、打开程序/连接程序

二、窗口指定、菜单/弹窗指定

三、控件指定、按钮指定

四、其他指定

五、鼠标/键盘等点击/输入操作

代码内容

# -*- coding: utf-8 -*-

'''
深入:

一、菜单选项

二、弹出菜单选项点击


继续持续深入pywin32比较好

'''



import pywinauto
from pywinauto.application import Application


# =============================================================================
# #自建函数  显示所有菜单及子菜单
# =============================================================================
def showMenus(dlg):
    for x in dlg.menu_items():                   #显示当前窗口菜单项
        print(x['text'])
        for y in x['menu_items']['menu_items']:  #从菜单项里遍历紫菜单项
            print('    '+ y['text'])


# =============================================================================
# #示例:启动无标题记事本
# =============================================================================
#app=Application()
#app.start('Notepad.exe')
#app.Notepad.draw_outline(colour='red')                    #当前dlg周围划线,单独输出可直观显示
#app.Notepad.print_control_identifiers(depth=100,filename='a.txt')     #当前dlg中所有控件输出:类名、标题名、位置等  
#app.Notepad.type_keys('SKJAKJFSDF')
#
#dlg=app['无标题 - 记事本']
#showMenus(dlg)      #自建函数输出窗口所有菜单及子菜单
#
#dlg.WindowText()    #返回对话框的标题文本
#
#
#app['无标题 - 记事本'].menu_select('编辑->替换(&R)...')    #当前dlg菜单检索
##app['替换'].print_control_identifiers()                  #当前dlg所有控件输出
#app['替换']['取消'].click()                               #app[dlg][ctl].click()  dlg和ctl都可以通过类、标题、句柄、等来绑定
#
#app['无标题 - 记事本'].Edit.type_keys('东风吹,战鼓擂',with_spaces=True)    #如果没有with_spaces 参数,则不会输入空格。请参阅SendKeys的文档,了解此方法,因为它是SendKeys的一个薄包装器。
#
#app['无标题 - 记事本'].menu_select('文件->退出')           #菜单检索
#app['记事本']['不保存'].close_click()                     #使用close_click()而不是click()更安全,因为close_click()会等待一段时间以给窗口时间关闭对话框。
  




# =============================================================================
# #示例:启动Tdxw2软件客户端
# =============================================================================
app=Application(backend='win32')
app.connect(path='D:\\02通达信金融终端软件客户端v7.46\\TdxW.exe')

dlg=app.window(title_re='通达信金融终端V7.46',class_name='TdxW_MainFrame_Class')
dlg.print_control_identifiers(filename='输出控件文件夹\\dlg_T.txt')
dlg.draw_outline()                                #周围划线,单独输出可直观显示

dlg_CD=dlg['#32770']
dlg_CD.print_control_identifiers(filename='输出控件文件夹\\dlg_CD.txt')
dlg_CD.draw_outline(colour='red')










#下面开始官方文档内容:
# =============================================================================
# #新开程序 或 链接已在运行程序
# =============================================================================

#新开程序
#appT2=Application().start('D:\\02通达信金融终端软件客户端v7.46\\TdxW.exe')


#链接已在运行程序
#参数path=''
#参数press=
#参数handle=
#参数组合 title_re='',class_name=''

#appT2=Application().connect(path='D:\\02通达信金融终端软件客户端v7.46\\TdxW.exe')


# =============================================================================
# #指定对话框    
# =============================================================================

#符号点. 等同于 列表[]
#dig=app.top_window()    #返回程序顶端窗口
#dig=app.window(title_re='.*记事本.*',class_name='')
#print(app.windows())    #返回所有对话框


# =============================================================================
# #指定控件
# =============================================================================

#app.dlg.control
#app['dlg']['control']

#当前会话中所有控件输出
#可选参数depth=          指定输出深度
#可选参数filename=''     指定输出目录
#app[dlg].print_control_identifiers(depth=,filename='')



# =============================================================================
# #隐式等待
# =============================================================================
#wait方法

#dlg.wait(“exists ready”, timeout = 5, retry_interval = 3)
#dlg.wait(wait_for, timeout = None, retry_interval = None)
#参数wait_for可传入五种参数, 可以组合传参,但要以空格隔开:
#exists: 窗口变成有效的句柄
#visible: 窗口可见,没有隐藏
#enabled: 窗口没有disable
#ready: visible + enable
#active: active
#参数timeout:设置超时时间,若在n秒内没有等到窗口在wait_for中传入的几种状态,则会抛出TimeoutError。
#参数retry_interval:超时后,间隔n秒再次重试。

#wait_not方法

#dlg.wait_not(wait_for_not,timeout = None,retry_interval = None)
#等待窗口不处于某种状态时。参数与wait传参一致。



# =============================================================================
# #通用操作
# =============================================================================

#dlg.popup_window()              #如果现实,则返回弹出窗口,如果没有弹出窗口则返回self


#dlg.WindowText()                #返回对话框的标题文本
#print(dlg.menu())               #返回对话框的菜单
#dlg.menu_items()                #返回对话框的所有菜单项及紫菜单项


#dlg.hide_from_taskbar()         #从Windows任务栏隐藏对话框
#dlg.is_in_taskbar()             #是否显示在Windows任务栏中
#dlg.show_in_taskbar()           #在Windows任务栏中显示该对话框


#dlg.get_show_state()            #获取显示状态 1恢复状态/2最小化/3最大化
#dlg.is_maximized()              #是否最大化
#dlg.is_minimized()              #是否最小化
#dlg.is_normal()                 #是否正常(没有最小化也没有最大化)
#
#dlg.maximize()                  #最大化
#dlg.minimize()                  #最小化
#dlg.restore()                   #窗口恢复之前状态
#
##dlg.menu()                     #返回控件的菜单
##dlg.menu_item(path='')         #返回参数path指定的菜单项
##dlg.menu_items()               #返回对话框的菜单项,如果没有菜单项则返回空列表
##dlg.menu_select()              #查找路径指定的菜单项 参数 ——>
#
#dlg.move_mouse(coords=(0,0))    #移动鼠标
#dlg.move_window(x=500,y=500)    #移动窗口到位置
#dlg.minimize()
#
#dlg.popup_window()               #如果现实,则返回弹出窗口,如果没有弹出窗口则返回self
#


#dlg.force_close()                #强制关闭对话框并返回结果
#dlg.close()                      #关闭对话框
#dlg.close_alt_f4()               #按alt+F4关闭窗口
#dlg.close_click()                #执行应该使窗口消失的单击操作,与click()的唯一区别是点击操作之前和之后有额外的延迟。



# =============================================================================
# #系统托盘
# =============================================================================
#
#from pywinauto.application import Application
#
#appS=Application().connect(path='explorer')
#systray_icons= appS.ShellTrayWnd
#systray_icons.draw_outline()
#systray_icons.print_control_identifiers(filename='systray.txt')
#
#
##systray_icons['Start'].draw_outline(colour='blue')             #开始
#
#systray_icons['MSTaskSwWClass'].draw_outline(colour='blue')    #正在运行程序
#systray_icons['TrayNotifyWnd '].draw_outline(colour='red')      #任务栏右下角区域
#systray_icons['StartButton'].draw_outline(colour='blue')       #右下角上拉键
#systray_icons['TrayClockWClass'].draw_outline(colour='red')    #时钟





# =============================================================================
# #鼠标控制
# =============================================================================

#pywinauto.mouse.click(button='left',coords=(0,0))    #单击指定坐标
#pywinauto.mouse.double_click(button='left',coords=(0,0))    #双击指定坐标
#pywinauto.mouse.move(coords=(0,0))    #鼠标移动到指定坐标
#
#pywinauto.mouse.press(button='left',coords=(0,0))    #指定位置按下鼠标左键
#pywinauto.mouse.release(button='left',coords=(100,200))  #指定位置释放鼠标左键
#
#pywinauto.mouse.right_click(coords=(0,0))    #右键点击指定位置
#
#pywinauto.mouse.scroll(coords=(500,500),wheel_dist=-100)    #中键滚动到指定坐标
#pywinauto.mouse.wheel_click(coords=(0, 0))    #中键单击指定坐标




# =============================================================================
# #鼠标点击
# =============================================================================
#click()                    #点击Button控件
#check_by_click()           #通过click()方法勾选checkbox
#uncheck_by_click()         #通过click()方法取消勾选checkbox
#get_check_state()          #返回checkbox的勾选状态(0没勾选,1勾选,2不定)
#is_checked                 #(勾选返回true,为勾选返回false,不定返回None)
#check()                    #勾选checkbox
#uncheck()                  #不勾选checkbox
#invoke()                   #点击(uia mode)
#toggle()                   #勾选checkbox(uia mode)





# =============================================================================
# #键盘操作
# =============================================================================
#type_keys('')

'''
SHIFT                            +      
CTRL                             ^      
ALT                               %
空格键                            {SPACE}
 
BACKSPACE                        {BACKSPACE}、{BS}   or   {BKSP}      
BREAK                            {BREAK}      
CAPS   LOCK                      {CAPSLOCK}      
DEL   or   DELETE                {DELETE}   or   {DEL}      
DOWN   ARROW                     {DOWN}      
END                              {END}      
ENTER                            {ENTER}   or   ~      
ESC                              {ESC}      
HELP                             {HELP}      
HOME                             {HOME}      
INS   or   INSERT                {INSERT}   or   {INS}      
LEFT   ARROW                     {LEFT}      
NUM   LOCK                       {NUMLOCK}      
PAGE   DOWN                      {PGDN}      
PAGE   UP                        {PGUP}      
PRINT   SCREEN                   {PRTSC}      
RIGHT   ARROW                    {RIGHT}      
SCROLL   LOCK                    {SCROLLLOCK}      
TAB                              {TAB}      
UP   ARROW                       {UP}     
+                                {ADD}      
-                                {SUBTRACT}      
*                                {MULTIPLY}      
/                                {DIVIDE}
F1                               {F1} 
F2                               {F2} 
F3                               {F3} 
.....
F15                              {F15} 
F16                              {F16} 
'''










  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/121317
推荐阅读
相关标签
  

闽ICP备14008679号