我有一个批处理文件,我可以执行它来打开一个程序。然后出现一个对话框,我在其中键入用户名和密码凭据
I打印控件标识符及其列表;
SunAwtDialog - 'Login' (L528, T242, R853, B501)
['SunAwtDialog', 'LoginSunAwtDialog', 'Login']
child_window(title="Login", class_name="SunAwtDialog")
所以在读了这篇post之后。我的理解是使用窗口+按钮和类似的点击方法;
dlp.SunAwtDialog['Login'].click()
但这会持续抛出一个
ElementNotFoundError
;ElementNotFoundError: {'best_match': 'SunAwtDialog', 'top_level_only': False, 'parent': <win32_element_info.HwndElementInfo - 'Login', SunAwtDialog, 2164976>, 'backend': 'win32'}
下面是完整的代码片段;
from pywinauto import application
import time
app = application.Application()
app.start(r"C:\\WINDOWS\system32\cmd.exe", wait_for_idle=False)
dlg = app.top_window()
dlg.type_keys('D:{ENTER}')
dlg.type_keys('cd{SPACE}Software\\client{ENTER}')
dlg.type_keys('run_client.bat{ENTER}')
time.sleep(10)
new_app = application.Application().connect(title="iManager")
dlp = new_app.top_window()
#type username + password
dlp.type_keys('user')
dlp.type_keys('{TAB}')
dlp.type_keys('pass')
#print control identifiers
dlp.print_control_identifiers()
#click login[![enter image description here][1]][1]
dlp.SunAwtDialog['Login'].click()
你可以在下面的图像上看到“登录”按钮,我想可以点击。“服务器”选项旁边还有一个按钮,但它不在我的控件标识符中
最佳答案
我使用的解决方案是使用发送密钥。试试这个:
from pywinauto.keyboard import send_keys
send_keys("{VK_MENU down}" "l" "{VK_MENU up}")
关于python - 如何使用PyWinAuto在对话框中单击按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54670224/