Pywinauto基礎(chǔ)教程之控件操作
操作窗體中的控件
Pywinauto使用以下順序定位一個(gè)控件
1:控件的標(biāo)題 title
2:控件的類名 friendly class
3:控件的標(biāo)題加類名 title + friendly class
常用定位控件接口(重要)
# 通過(guò)層級(jí)查找控件相關(guān)方法 window(**kwargs) # 用于窗口的查找 child_window(**kwargs) # 可以無(wú)視層級(jí)的找后代中某個(gè)符合條件的元素===>【最常用】 parent() # 返回此元素的父元素,沒有參數(shù) children(**kwargs) # 返回符合條件的子元素列表,支持索引,是BaseWrapper對(duì)象(或子類) iter_children(**kwargs) # 返回子元素的迭代器,是BaseWrapper對(duì)象(或子類) descendants(**kwargs) # 返回符合條件的所有后代元素列表,是BaseWrapper對(duì)象(或子類) iter_children(**kwargs) # 符合條件后代元素迭代器,是BaseWrapper對(duì)象(或子類)---> 存疑,是iter_descendants?
常用屬性(重要)
# 常用的 class_name=None, # 類名 class_name_re=None, # 正則匹配類名 title=None, # 控件的標(biāo)題文字,對(duì)應(yīng)inspect中Name字段 title_re=None, # 正則匹配文字 control_type=None, # 控件類型,inspect界面LocalizedControlType字段的英文名 best_match=None, # 模糊匹配類似的title auto_id=None, # inspect界面AutomationId字段,但是很多控件沒有這個(gè)屬性 # 不常用 parent=None, process=None,# 這個(gè)基本不用,每次啟動(dòng)進(jìn)程都會(huì)變化 top_level_only=True, visible_only=True, enabled_only=False, handle=None, ctrl_index=None, found_index=None, predicate_func=None, active_only=False, control_id=None, framework_id=None, backend=None,
控件可用的方法屬性(重要)
# 以下幾個(gè)只支持窗口模式的控件
dlg.close() # 關(guān)閉界面
dlg.minimize() # 最小化界面
dlg.maximize() # 最大化界面
dlg.restore() # 將窗口恢復(fù)為正常大小,比如最小化的讓他正常顯示在桌面
dlg.get_show_state() # 正常0,最大化1,最小化2
dlg.menu_select() # 菜單欄,eg:app.window.menu_select(Edit -> Replace)
dlg.exists(timeout=None, retry_interval=None) # 判斷是否存在
#timeout:等待時(shí)間,一般默認(rèn)5s
#retry_interval:timeout內(nèi)重試時(shí)間
dlg.wait(wait_for, timeout=None, retry_interval=None) # 等待窗口處于特定狀態(tài)
dlg.wait_not(wait_for_not, timeout=None, retry_interval=None) # 等待窗口不處于特定狀態(tài),即等待消失
# wait_for/wait_for_not:
# * 'exists' means that the window is a valid handle
# * 'visible' means that the window is not hidden
# * 'enabled' means that the window is not disabled
# * 'ready' means that the window is visible and enabled
# * 'active' means that the window is active
# timeout:等待多久
# retry_interval:timeout內(nèi)重試時(shí)間
# eg: dlg.wait('ready')
# 鼠標(biāo)鍵盤操作,只列舉了常用形式,他們有很多默認(rèn)參數(shù)但不常用,可以在源碼中查看
ctrl.click_input() # 最常用的點(diǎn)擊方法,一切點(diǎn)擊操作的基本方法(底層調(diào)用只是參數(shù)不同),左鍵單擊,使用時(shí)一般都使用默認(rèn)不需要帶參數(shù)
ctrl.right_click_input() # 鼠標(biāo)右鍵單擊
ctrl.type_keys(keys, pause = None, with_spaces = False,) # 鍵盤輸入,底層還是調(diào)用keyboard.send_keys
# keys:要輸入的文字內(nèi)容
# pause:每輸入一個(gè)字符后等待時(shí)間,默認(rèn)0.01就行
# with_spaces:是否保留keys中的所有空格,默認(rèn)去除0
ctrl.double_click_input(button ="left", coords = (None, None)) # 左鍵雙擊
ctrl.press_mouse_input(coords = (None, None)) # 指定坐標(biāo)按下左鍵,不傳坐標(biāo)默認(rèn)左上角
ctrl.release_mouse_input(coords = (None, None)) # 指定坐標(biāo)釋放左鍵,不傳坐標(biāo)默認(rèn)左上角
ctrl.move_mouse_input(coords=(0, 0)) # 將鼠標(biāo)移動(dòng)到指定坐標(biāo),不傳坐標(biāo)默認(rèn)左上角
ctrl.drag_mouse_input(dst=(0, 0)) # 將ctrl拖動(dòng)到dst,是press-move-release操作集合
# 控件的常用屬性
ctrl.children_texts() # 所有子控件的文字列表,對(duì)應(yīng)inspect中Name字段
ctrl.window_text() # 控件的標(biāo)題文字,對(duì)應(yīng)inspect中Name字段
# ctrl.element_info.name
ctrl.class_name() # 控件的類名,對(duì)應(yīng)inspect中ClassName字段,有些控件沒有類名
# ctrl.element_info.class_name
ctrl.element_info.control_type # 控件類型,inspect界面LocalizedControlType字段的英文名
ctrl.is_child(parent) # ctrl是否是parent的子控件
ctrl.legacy_properties().get('Value') # 可以獲取inspect界面LegacyIAccessible開頭的一系列字段,在源碼uiawraper.py中找到了這個(gè)方法,非常有用
# 控件常用操作
ctrl.draw_outline(colour='green') # 空間外圍畫框,便于查看,支持'red', 'green', 'blue'
ctrl.print_control_identifiers(depth=None, filename=None) # 以樹形結(jié)構(gòu)打印其包含的元素,詳見打印元素
# depth:打印的深度,缺省時(shí)打印最大深度。
# filename:將返回的標(biāo)識(shí)存成文件(生成的文件與當(dāng)前運(yùn)行的腳本在同一個(gè)路徑下)
ctrl.scroll(direction, amount, count=1,) # 滾動(dòng)
# direction :"up", "down", "left", "right"
# amount:"line" or "page"
# count:int 滾動(dòng)次數(shù)
ctrl.capture_as_image() # 返回控件的 PIL image對(duì)象,可繼續(xù)使用其方法如下:
# eg: ctrl.capture_as_image().save(img_path)
ret = ctrl.rectangle() # 控件上下左右坐標(biāo),(L430, T177, R1490, B941),可輸出上下左右
# eg: ret.top=177
# ret.bottom=941
# ret.left=430
# ret.right=1490總結(jié)
到此這篇關(guān)于Pywinauto基礎(chǔ)教程之控件操作的文章就介紹到這了,更多相關(guān)Pywinauto控件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django用戶登錄與注冊(cè)系統(tǒng)的實(shí)現(xiàn)示例
這篇文章主要介紹了Django用戶登錄與注冊(cè)系統(tǒng)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
python中nan與inf轉(zhuǎn)為特定數(shù)字方法示例
這篇文章主要給大家介紹了將python中nan與inf轉(zhuǎn)為特定數(shù)字的方法,文中給出了詳細(xì)的示例代碼和運(yùn)行結(jié)果,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
python中K-means算法基礎(chǔ)知識(shí)點(diǎn)
在本篇文章里小編給大家整理的是一篇關(guān)于python中K-means算法基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01
Python 根據(jù)數(shù)據(jù)模板創(chuàng)建shapefile的實(shí)現(xiàn)
今天小編就為大家分享一篇Python 根據(jù)數(shù)據(jù)模板創(chuàng)建shapefile的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python如何將txt文件的內(nèi)容逐行讀取轉(zhuǎn)化成數(shù)組
這篇文章主要介紹了python如何將txt文件的內(nèi)容逐行讀取轉(zhuǎn)化成數(shù)組問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
python+splinter實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程
這篇文章主要為大家詳細(xì)介紹了python+splinter實(shí)現(xiàn)12306網(wǎng)站刷票并自動(dòng)購(gòu)票流程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Python實(shí)現(xiàn)指定數(shù)組下標(biāo)值正序與倒序排序算法功能舉例
在程序中,經(jīng)常需要按數(shù)組倒序或反序重新排列數(shù)組,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)指定數(shù)組下標(biāo)值正序與倒序排序算法功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

