pywinauto - Получение текста свойства - PullRequest
0 голосов
/ 15 мая 2018

Я использую pywinauto и хочу выбрать текст в одном из свойств.Тем не менее, я не могу понять, как получить к нему доступ.

import pywinauto
pwa_app = pywinauto.application.Application()
path = r'C:\Users\me\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe'
pwa_app.start(path)
w_handle = pywinauto.findwindows.find_windows(title=u'Cisco AnyConnect Secure Mobility Client', class_name='#32770')[0]
window = pwa_app.window_(handle=w_handle)
window.SetFocus()
window.print_control_identifiers(2)

Control Identifiers:

Dialog - 'Cisco AnyConnect Secure Mobility Client'    (L1421, T493, R1854, B690)
['Cisco AnyConnect Secure Mobility Client', 'Cisco AnyConnect Secure Mobility ClientDialog', 'Dialog']
child_window(title="Cisco AnyConnect Secure Mobility Client", class_name="#32770")
   | 
   | #32770 - ''    (L1441, T535, R1834, B647)
   | ['#32770', 'VPN:#32770']
   | child_window(class_name="#32770")
   | 
   | Static - 'VPN:'    (L1527, T548, R1551, B561)
   | ['Static', 'VPN:Static', 'VPN:', 'Static0', 'Static1']
   | child_window(title="VPN:", class_name="Static")
   | 
   | ComboBox - 'Brock AppDMZ VPN'    (L1527, T594, R1719, B615)
   | ['ComboBox', 'Connected to Brock AppDMZ VPN.ComboBox', 'VPN:ComboBox', 'ComboBox0', 'ComboBox1', 'Connected to Brock AppDMZ VPN.ComboBox0', 'Connected to Brock AppDMZ VPN.ComboBox1']
   | child_window(title="Brock AppDMZ VPN", class_name="ComboBox")
   | 
   | Edit - 'Brock AppDMZ VPN'    (L1530, T597, R1699, B612)
   | ['Connected to Brock AppDMZ VPN.Edit', 'Edit']
   | child_window(title="Brock AppDMZ VPN", class_name="Edit")
   | 
   | ComboBox - ''    (L1527, T594, R1719, B615)
   | ['ComboBox2', 'Connected to Brock AppDMZ VPN.ComboBox2']
   | child_window(class_name="ComboBox")

Я хочу получить доступ к значению "Connected to Brock AppDMZ VPN", чтобы определить, подключен ли я к своему VPN, но документация по этой библиотеке не совсем ясна, как это сделать.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018
label = window.child_window(class_name="Static", found_index=1).wait('exists')
print label.get_value()

Попробуйте это, <element>.get_value() надеюсь, что это даст вам необходимый текст.

0 голосов
/ 15 мая 2018

Вывод print_control_identifiers() является неполным (целевая текстовая метка здесь не указана, в окне 3 статических текста), но, к счастью, на моем ПК установлен тот же клиент Cisco VPN.Проблема в том, что этот «статический» текст является динамическим.:) Есть 2 способа справиться с этой ситуацией.

1) Просто создайте спецификацию окна и проверьте, существует ли это окно:

connected_label = window.child_window(title="Connected to Brock AppDMZ VPN.", class_name="Static")

# default timeout is pywinauto.timings.Timings.window_find_timeout (5 sec.)
if connected_label.exists(timeout=10):
    pass # do whatever you want

2) Положитесь на номер этой статикитекст и проверять его текст каждый раз, когда вам нужно состояние подключения:

label = window.child_window(class_name="Static", found_index=1).wait('exists')

if label.window_text() == "Connected to Brock AppDMZ VPN.":
    pass # do whatever you want
...