這里僅僅是以操作windows下的文件夾來演示pywinauto的幾個api,實際操作文件夾和文件是可以用其他庫的哦
import time import json from pywinauto import Application, keyboard import pyautogui from subprocess import Popen import os def test_explorer(): exe_path = r'C:\Windows\explorer.exe' app = Application(backend='uia') # app = app.start(exe_path) # p = Popen(exe_path) # 這種方式不可行,app.windows()都找不到窗口 # app = app.connect(process=p.pid) # os.system(exe_path) # 啟動程序,直接打開explorer.exe效果沒有雙擊圖標好,有時候切換目錄失敗,有時候全選刪除文件失敗 os.system(fr"{exe_path} d:\baidu") # 未了防止以上問題,這里打開一個指定的目錄 # 通過程序圖標的圖片在屏幕中找到圖標 # 然后雙擊圖標啟動程序 # box = pyautogui.locateOnScreen(r'd:\baidu.png') # x, y = pyautogui.center(box) # pyautogui.doubleClick(x, y) # 連接到程序 app = app.connect(path=exe_path) app['baidu'].window(title_re='地址:').type_keys('{ENTER}' r'd:\temp' '{ENTER}') # 切換目錄 # app['文件資源管理器'].window(title_re='地址:').type_keys('{ENTER}' r'd:\temp' '{ENTER}') # 切換目錄 temp = app['temp'] # 獲取到切換的目錄的窗口 # keyboard.send_keys('^a') # 刪除當前目錄中的文件 # time.sleep(1) # keyboard.send_keys('{DELETE}') temp.type_keys('^a').type_keys('{VK_DELETE}') time.sleep(5) # 等待刪除完畢 def make_dirs(n): for i in range(1, n+1): temp['新建文件夾'].click() # Button類型可直接click time.sleep(0.5) # 停頓一下,防止下面輸入名稱時少輸入字符 # 修改目錄的名稱 keyboard.send_keys(f'這是一個自動創建的目錄{i}' '{ENTER}' ) # os.mkdir(fr'd:\temp\這是一個自動創建的目錄{i}') make_dirs(10) # 獲取當期目錄的文件列表 files = temp.child_window(title="項目視圖", control_type="List").children(control_type='ListItem') rows = [] for file in files: columns = file.children() row = {} for column in columns: properties = column.legacy_properties() # 獲取屬性信息 row[properties['Name']] = properties['Value'] rows.append(row) print(json.dumps(rows, ensure_ascii=False)) # 點擊刪除按鈕 # temp.window(title="組織", control_type="ToolBar").button('刪除').type_keys('{ENTER}') # 沒有click方法,借助回車實現點擊功能 # 打印出當前窗口的控件樹 # print(app['temp'].dump_tree()) def main(): test_explorer() if __name__ == '__main__': main()