不能用 AutoIt 监视 CheckListBox
Can't spy on CheckListBox with AutoIt
我无法使用 AutoIt 在 window 框架中监视 CheckListBox 对象(我认为 Delphi)。它在该地区看不到任何东西。我需要从该区域获取项目列表,可能 select 其中一个项目。
我正在使用 python 和 robotframework。
我也试过使用 ControlListView:
self.get_autoit().ControlListView("Setup - XXXXX", "Select the XXXX", "[CLASS:TNewCheckListBox; INSTANCE:1]", "GetText")
但它抛出:
com_error: (-2147352561, 'Parameter not optional.', None, None)
错误似乎是 pywinauto 的问题。
无论如何我无法从这个烦人的对象中获取项目列表。
autoit spy 的结果在屏幕截图中:
任何人都可以建议一个访问这个未识别区域中的项目列表的好方法吗?
我可以看到来自 inspect.exe 的内部项目:
请在评论中查看瓦西里的详细回答。但是总结一下:
在最初的问题中,我试图使用 pyautoit 从 CheckListBox 获取项目列表,但是因为它不起作用。因此,正如 Vasily 所建议的,我在 UIA 模式下使用了 pywinauto(另一种自动化工具),以下对我有用:
self.Wizard = Application(backend="uia").connect(title = self.installerTitle) #connect the application
self.Wizard.InstallerDialog.TreeView.wait('visible', timeout=150) #wait for tree view to load
items = self.Wizard.InstallerDialog.TreeView.children() #get the children of tree view
for item in items: #iterate through items, radio button in this case
if item.window_text() == "item_name_to_select":
item.click_input() #click radio button if the text is what we are looking for
return
print "no item found with name: item_name_to_select"
最有用的技巧是使用 pywinauto 中的 print_control_identifiers()
方法来获取控件的标识符。 uia
模式中的 inspect.exe
也有助于识别对象。
我无法使用 AutoIt 在 window 框架中监视 CheckListBox 对象(我认为 Delphi)。它在该地区看不到任何东西。我需要从该区域获取项目列表,可能 select 其中一个项目。
我正在使用 python 和 robotframework。
我也试过使用 ControlListView:
self.get_autoit().ControlListView("Setup - XXXXX", "Select the XXXX", "[CLASS:TNewCheckListBox; INSTANCE:1]", "GetText")
但它抛出:
com_error: (-2147352561, 'Parameter not optional.', None, None)
错误似乎是 pywinauto 的问题。
无论如何我无法从这个烦人的对象中获取项目列表。
autoit spy 的结果在屏幕截图中:
任何人都可以建议一个访问这个未识别区域中的项目列表的好方法吗?
我可以看到来自 inspect.exe 的内部项目:
请在评论中查看瓦西里的详细回答。但是总结一下:
在最初的问题中,我试图使用 pyautoit 从 CheckListBox 获取项目列表,但是因为它不起作用。因此,正如 Vasily 所建议的,我在 UIA 模式下使用了 pywinauto(另一种自动化工具),以下对我有用:
self.Wizard = Application(backend="uia").connect(title = self.installerTitle) #connect the application
self.Wizard.InstallerDialog.TreeView.wait('visible', timeout=150) #wait for tree view to load
items = self.Wizard.InstallerDialog.TreeView.children() #get the children of tree view
for item in items: #iterate through items, radio button in this case
if item.window_text() == "item_name_to_select":
item.click_input() #click radio button if the text is what we are looking for
return
print "no item found with name: item_name_to_select"
最有用的技巧是使用 pywinauto 中的 print_control_identifiers()
方法来获取控件的标识符。 uia
模式中的 inspect.exe
也有助于识别对象。