赞
踩
文档: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} '''
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。