How to getting around pywinauto's ElementAmbiguousError: There are 2 elements that match the criteria error
How to getting around pywinauto's ElementAmbiguousError: There are 2 elements that match the criteria error
我正在尝试使用 python 和 pywinauto 使 运行ning Rufus 自动化。
到目前为止,我已经能够 运行 可执行文件并修改 Rufus 主屏幕上的控件。
在我编写的代码单击“开始”按钮后,Rufus 会显示一个弹出窗口。
此弹出窗口警告您 USB 密钥的全部内容将被删除。
我无法做的是连接到那个弹出窗口并按下那里的“确定”按钮。
这是我写的代码:
# Connect to an existing window with title matching a regular expression
def 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 None
popup = ConnectWindow('^Rufus$')
popup.set_focus()
pwa.keyboard.send_keys('{RIGHT}{ENTER}')
ConnectWindow 确实找到 window 并且弹出窗口的类型为 pywinauto.application.WindowSpecification。
但是,每当我尝试对弹出窗口执行任何操作时(例如 set_focus),我都会收到以下错误:
pywinauto.findwindows.ElementAmbiguousError: 有2个元素符合条件 {'backend': 'win32', 'process': 32992}
有谁知道我该如何解决这个问题?
所有这些代码都可以写得更紧凑。请不要直接使用 find_windows
函数。阅读 Getting Started Guide 了解 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
我正在尝试使用 python 和 pywinauto 使 运行ning Rufus 自动化。
到目前为止,我已经能够 运行 可执行文件并修改 Rufus 主屏幕上的控件。
在我编写的代码单击“开始”按钮后,Rufus 会显示一个弹出窗口。
此弹出窗口警告您 USB 密钥的全部内容将被删除。
我无法做的是连接到那个弹出窗口并按下那里的“确定”按钮。
这是我写的代码:
# Connect to an existing window with title matching a regular expression
def 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 None
popup = ConnectWindow('^Rufus$')
popup.set_focus()
pwa.keyboard.send_keys('{RIGHT}{ENTER}')
ConnectWindow 确实找到 window 并且弹出窗口的类型为 pywinauto.application.WindowSpecification。
但是,每当我尝试对弹出窗口执行任何操作时(例如 set_focus),我都会收到以下错误:
pywinauto.findwindows.ElementAmbiguousError: 有2个元素符合条件 {'backend': 'win32', 'process': 32992}
有谁知道我该如何解决这个问题?
所有这些代码都可以写得更紧凑。请不要直接使用 find_windows
函数。阅读 Getting Started Guide 了解 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