GUI 窗口查詢工具
spy++lite
pywinauto 模塊 原理:
https://www.cnblogs.com/testlife007/p/4710599.html
pywhinayto 常用功能
http://hao.imrrp.com/blog.php?id=4538
點擊事件:
https://blog.csdn.net/weixin_40161673/article/details/83246861
捕捉
https://blog.csdn.net/weixin_40161673/article/details/83246861
已摸索實踐方法:
自動安裝騰訊QQ:(軟件默認為win32)
from pywinauto import application import time #1.QQ自動安裝 app = application.Application().start('D:\software_用戶軟件\QQ9.0.3.exe') time.sleep(2) #2.獲取 執行程序的窗體 # 在不知道窗體名稱,可以報錯的方式查找窗體名稱 # window_title=['無標題-記事本'] # print(app[window_title].wrapper_object()) window_title='騰訊QQ安裝向導' #3.查看一個窗體含有的控件,子窗體,菜單 # print(app[window_title].print_control_identifiers()) #4.觸發窗體含有的控件,子窗體,菜單 #觸發方式:app[window_title].child_window(title='窗體名',class_name="窗體類名") #.click() 點擊事件 #.set_edit_text() 設置Edit # 更多方式可以 通過help(app[window_title].child_window(class_name="Edit"))查到 #點開QQ安裝自定義選項 app[window_title].child_window(title="自定義選項").click() time.sleep(1) #修改默認安裝路徑 app[window_title].child_window(class_name="Edit").set_edit_text(r'D:\Program Files (x86)\Tencent\QQ') #取消自啟動 app[window_title].child_window(title="添加到快速啟動欄").click() app[window_title].child_window(title="開機自動啟動").click() #執行安裝 # print(app[window_title].print_control_identifiers()) # help(app[window_title].child_window(class_name="#32770").child_window(title="立即安裝", class_name="Button").click()) app[window_title].child_window(class_name="#32770").child_window(title="立即安裝", class_name="Button").click() time.sleep(40) # print(app[window_title].print_control_identifiers()) app[window_title].child_window(class_name="#32770").child_window(title="安裝QQ瀏覽器", class_name="Button").uncheck_by_click() app[window_title].child_window(class_name="#32770").child_window(title="安裝QQ游戲 免費獲取專屬禮包", class_name="Button").uncheck_by_click() app[window_title].child_window(class_name="#32770").child_window(title="安裝QQ音樂播放器", class_name="Button").uncheck_by_click() app[window_title].child_window(class_name="#32770").child_window(title="完成安裝", class_name="Button").click()
自動安裝話務軟件:(軟件默認為uia)
這個軟件自動安裝有點特殊,啟動的進程不是窗口進程,所有拿不到窗口對象
所以采用connect 進程號的方式去獲取 啟動的窗口對象.
from pywinauto import application import time import psutil import re import os os.popen('D:\software_用戶軟件\X-Lite電話系統.exe') time.sleep(1) PID = 0 for proc in psutil.process_iter(): try: pinfo = proc.as_dict(attrs=['pid', 'name']) except psutil.NoSuchProcess: pass else: if re.match(r'^is.*?.tmp$',pinfo['name']): PID = pinfo['pid'] # print(PID) app = application.Application(backend='uia').connect(process=PID) # print(app.window(class_name='TWizardForm').print_control_identifiers()) # print(dir(app.window(class_name='TWizardForm'))) app.window(class_name='TWizardForm').child_window(title="Next >",control_type="Button").click() # print(app.window(class_name='TWizardForm').print_control_identifiers()) app.window(class_name='TWizardForm').child_window(title="I accept the agreement", control_type="RadioButton").click() app.window(class_name='TWizardForm').child_window(title="Next >", control_type="Button").click() # print(app.window(class_name='TWizardForm').print_control_identifiers()) app.window(class_name='TWizardForm').child_window(title="To continue, click Next. If you would like t" "o select a different folder, click Browse.", control_type="Edit").set_edit_text(r'D:\Program Files (x86)\CounterPath\X-Lite') app.window(class_name='TWizardForm').child_window(title="Next >",control_type="Button").click() app.window(class_name='TWizardForm').child_window(title="Next >",control_type="Button").click() time.sleep(2) # print(app.window(class_name='TWizardForm').print_control_identifiers()) # print(dir(app.window(class_name='TWizardForm').child_window(title="Launch X-Lite", control_type="CheckBox"))) app.window(class_name='TWizardForm').child_window(title="Finish", control_type="Button").click()
