Как идентифицировать элементы пользовательского интерфейса, когда несколько элементов пользовательского интерфейса имеют одинаковые элементы пользовательского интерфейса - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь автоматизировать пользовательский интерфейс с помощью PywinAuto Lib.Когда я пытаюсь, несколько элементов интерфейса имеют одинаковые атрибуты интерфейса.Есть ли способ, мы можем псевдоним и определить, что нам нужно.

ControlType: RadioButtonControl    ClassName: RadioButton    AutomationId: checkBox1    Rect: (805, 259, 855, 287)    Name:     Handle: 0x0(0)    Depth: 7    CurrentIsSelected: True

ControlType: RadioButtonControl    ClassName: RadioButton    AutomationId: checkBox1    Rect: (858, 259, 908, 287)    Name:     Handle: 0x0(0)    Depth: 7    CurrentIsSelected: False

Как мы видим, мы видим одинаковые атрибуты пользовательского интерфейса для обоих элементов пользовательского интерфейса.Одним из способов решения этой проблемы является то, что мы можем вернуться к разработке пользовательского интерфейса и изменить ситуацию.

Но есть ли способ, которым мы можем сделать псевдоним и идентифицировать.

selectButton = app1.Dialog.child_window(auto_id="checkBox1",control_type="RadioButton")
selectButton .click_input(button='left')

при запуске мы видим эту ошибку.

pywinauto.findwindows.ElementAmbiguousError: There are 3 elements that match the criteria {'auto_id': 'checkBox1', 'control_type': 'RadioButton', 'top_level_only': False, 'parent': <uia_element_info.UIAElementInfo - 'Ui automation', Window, 339012>, 'backend': 'uia'}

1 Ответ

0 голосов
/ 22 января 2019

Есть несколько способов:

  1. Использование found_index=i в критериях поиска child_window.

  2. Использование children(), но в 0.6.x количество критериев фильтрации очень ограничено (планируется для будущих улучшений): class_name, control_type, content_only, title.

  3. Использование best_match правил поиска из Руководство по началу работы -> Как узнать имена магических атрибутов (предыдущие главы также рекомендуется читать).

...