2016-12-14 8 views
0

Я не могу шпионить за объектом CheckListBox (я думаю, Delphi) в оконной рамке с AutoIt. Он ничего не видит в этом районе. Мне нужно получить список предметов из области и, возможно, выбрать один из элементов.Не могу заглянуть в CheckListBox с AutoIt

Я использую 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 шпиона в скриншоте:

result from autoit spy

Может кто-нибудь пожалуйста, предложить хороший способ получить доступ к списку элементов в этой неопознанной области?

я могу увидеть внутри элементов из inspect.exe:

from inspect.exe

+0

Это не выглядит как аа TCheckListBox, он выглядит как TRadioGroup – Dsm

+0

[pywinauto] (https://github.com/pywinauto/pywinauto) или [pyautoit] (https://github.com/jacexh/pyautoit)? Есть две разные библиотеки. Кажется, вы используете pyautoit, а не pywinauto. –

+0

Я использую pywinauto. autoitlibrary в рамках робота использует pywinauto. –

ответ

0

Пожалуйста, смотрите подробный ответ от Василия в комментариях. Однако подведем итог:

В исходном вопросе я пытался получить список элементов из CheckListBox, используя pyautoit, но поскольку он не работал. Так, как это было предложено Василием, я использовал 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" 

Самых полезный трюк заключается в использовании print_control_identifiers() метода в pywinauto, чтобы получить идентификаторы контроля. Кроме того, inspect.exe в режиме uia помог идентифицировать объекты.

+0

Если вы нашли решение и хотите поделиться им с нами, тогда опубликуйте все решение в качестве ответа. Трудно прочитать несколько комментариев и угадать, какая комбинация ответов является решением. – RBA