Как получить текст из приложения, которое является не обнаруживаемым элементом управления [edit] с использованием pywinauto? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь автоматизировать свое приложение, используя pywinauto.Я хочу прочитать значения из поля ввода, которые доступны только для чтения и фокусировки.это возможно через pywinauto?

Вот мой код:

dialog = Desktop(backend='uia')
win = dialog.window(title_re ="XXX_Decoder")
label=win.child_window(title="Debug Output",auto_id="debugConsoleGroupBox",control_type="Group")
label.child_window(auto_id="debugConsole", control_type="Edit").texts()

для win.print_control_identifiers () получаю как:

Dialog - 'WRT BT Decoder'    (L52, T52, R724, B430)
['WRT BT Decoder', 'Dialog', 'WRT BT DecoderDialog']
child_window(title="WRT BT Decoder", auto_id="WRT_BT_Decoders", control_type="Window")
   | 
   | 
   | GroupBox - 'Debug Output'    (L80, T257, R670, B370)
   | ['Debug OutputGroupBox', 'GroupBox', 'Debug Output', 'GroupBox0', 'GroupBox1']
   | child_window(title="Debug Output", auto_id="debugConsoleGroupBox", control_type="Group")
   |    | 
   |    | Edit - ''    (L100, T276, R644, B364)
   |    | ['', 'Edit', '0', '1', 'Edit0', 'Edit1']
   |    | child_window(auto_id="debugConsole", control_type="Edit")
   |    |    | 
   |    |    | ScrollBar - 'Vertical'    (L625, T278, R642, B362)
   |    |    | ['ScrollBar', 'VerticalScrollBar', 'Vertical']
   |    |    | child_window(title="Vertical", auto_id="NonClientVerticalScrollBar", control_type="ScrollBar")
   |    |    |    | 
   |    |    |    | Button - 'Line up'    (L625, T278, R642, B295)
   |    |    |    | ['Line up', 'Line upButton', 'Button2']
   |    |    |    | child_window(title="Line up", auto_id="UpButton", control_type="Button")
   |    |    |    | 
   |    |    |    | Button - 'Line down'    (L625, T345, R642, B362)
   |    |    |    | ['Line downButton', 'Line down', 'Button3']
   |    |    |    | child_window(title="Line down", auto_id="DownButton", control_type="Button")
   | 

В inspect.exe:

LegacyIAccessible.Name: ""
LegacyIAccessible.Role: editable text (0x2A)
LegacyIAccessible.State:    read only,focusable (0x100040)

это так.Как я могу получить значение?

1 Ответ

0 голосов
/ 02 марта 2019

Это возможно следующим образом:

label.child_window(auto_id="debugConsole", control_type="Edit").iface_value.GetValue()

Он будет добавлен как метод .get_value() в будущих выпусках.

...