Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pywinauto-获取属性文本_Python_Pywinauto - Fatal编程技术网

Python pywinauto-获取属性文本

Python pywinauto-获取属性文本,python,pywinauto,Python,Pywinauto,我正在使用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(

我正在使用
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,但此库中的文档不太清楚如何连接。

打印控制标识符()的输出不完整。(此处未列出目标文本标签,窗口上有3个静态文本),但幸运的是,我的电脑上有相同的Cisco VPN客户端。问题是此“静态”文本是动态的。:)有两种方法可以处理这种情况

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

试试这个,
.get_value()
希望它能为您提供所需的文本。

是的,检测到来自SWAPY的一些代码。它倾向于使用低级函数
find_windows
进行构造,尽管
app.connect(title=“…”)
在一行中完成相同的任务。SWAPY在pywinauto==0.5.4之前一直良好,但不再保持:(顺便说一句,请使用
.set\u focus()
,我们发现默认win32后端的
SetFocus()
可能为空,并且它已被弃用。请使用PEP8投诉名称。
label = window.child_window(class_name="Static", found_index=1).wait('exists')
print label.get_value()