我正在嘗試使用 python 和 pywinauto 自動運行Rufus。到目前為止,我已經(jīng)能夠運行可執(zhí)行文件并修改 Rufus 主屏幕上的控件。在我編寫的代碼單擊“開始”按鈕后,Rufus 將顯示一個彈出窗口。此彈出窗口警告您 USB 閃存盤的全部內(nèi)容將被刪除。我無法做的是連接到該彈出窗口并按那里的“確定”按鈕。這是我寫的代碼:# Connect to an existing window with title matching a regular expressiondef ConnectWindow(exp): # Look for window matching regular expression try: handles = pwa.findwindows.find_windows(found_index=0, title_re=exp) except pwa.findwindows.WindowNotFoundError: handles = None # Make sure something was found if handles: # Make sure only one found if len(handles) > 1: print('Matched more than one window matching regular expression: {0}'.format(exp)) sys.exit(1) # Return it! return pwa.Application().connect(handle=handles[0]).window() # Nothing found return Nonepopup = ConnectWindow('^Rufus$')popup.set_focus()pwa.keyboard.send_keys('{RIGHT}{ENTER}')ConnectWindow 確實找到了窗口,并且彈出窗口的類型為 pywinauto.application.WindowSpecification。但是,每當(dāng)我嘗試對彈出窗口執(zhí)行任何操作(例如 set_focus)時,我都會收到以下錯誤:pywinauto.findwindows.ElementAmbigouslyError: There are 2 elements that match the criteria {'backend': 'win32', 'process': 32992}有誰知道我該如何解決這個問題?
1 回答

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗 獲得超13個贊
所有這些代碼都可以寫得更加緊湊。請不要find_windows直接使用函數(shù)。閱讀入門指南以了解 WindowSpecification 的工作原理。
app = pwa.Application(backend="win32").connect(found_index=0, title_re=exp, timeout=10)
popup = app.window(found_index=0, title_re=exp)
popup.type_keys('{RIGHT}{ENTER}') # it calls .set_focus() inside
添加回答
舉報
0/150
提交
取消