pywinauto print_control_identifiers 返回
时间: 2023-08-05 10:10:39 浏览: 76
`pywinauto` 库的 `print_control_identifiers` 函数返回的也是一个字符串,其中包含了窗口及其子控件的信息,格式为:
```
ControlType: Name
AutomationId: xxxxx
ClassName: xxxxx
FriendlyClassName: xxxxx
Subclass: xxxxx
Text: xxxxx
Rect: left,top,width,height
```
其中 `ControlType` 是控件的类型,比如 `Button`、`Edit`、`ComboBox` 等;`Name` 是控件的名称;`AutomationId` 是控件的自动化 ID;`ClassName` 是控件的类名;`FriendlyClassName` 是控件的友好类名;`Subclass` 是控件的子类名;`Text` 是控件的文本内容;`Rect` 是控件在窗口中的位置和大小信息。每个控件信息之间用空行分隔。
相关问题
pywinauto print_control_identifiers() 坐标L数字比坐标R大 为什么
在 pywinauto 中,通过 `print_control_identifiers()` 方法打印的控件标识符信息中,L、T、R、B 四个坐标分别表示控件的左、上、右、下边界的坐标值。
在某些情况下,可能会发现控件的 L 坐标值比 R 坐标值大的情况。这是因为 pywinauto 是基于 Windows 操作系统的 GUI 自动化框架,而 Windows 中的坐标系是以屏幕左上角为原点,向右为 X 轴正方向,向下为 Y 轴正方向,因此控件的右边界坐标值会比左边界坐标值更大。
但是,在某些特殊情况下,例如控件被旋转或翻转等情况,可能会出现 L 坐标值比 R 坐标值大的情况。这种情况下,需要根据具体情况来处理,例如可以通过旋转或翻转控件来纠正坐标值,或者通过其他方法来获取控件的位置和大小信息。
print_control_identifiers()为什么不能打印出层次结构
`print_control_identifiers()` 方法应该可以打印出窗口的控件层次结构和属性。如果它没有打印出层次结构,可能是由于以下原因之一:
1. 你没有正确地指定窗口对象。在使用 `print_control_identifiers()` 方法之前,你需要使用 `Application()` 类或窗口的 `.child_window()` 方法创建窗口对象,并将其赋值给一个变量,然后才能使用该变量调用 `print_control_identifiers()` 方法。例如:
```python
from pywinauto.application import Application
app = Application().start("notepad.exe")
dlg = app.UntitledNotepad
dlg.print_control_identifiers()
```
2. 应用程序未加载完全或窗口未加载。如果应用程序或窗口尚未完全加载,则 `print_control_identifiers()` 方法可能无法正确识别窗口的子控件。你可以使用 `time.sleep()` 函数在调用 `print_control_identifiers()` 方法之前等待应用程序或窗口加载完全。例如:
```python
from pywinauto.application import Application
import time
app = Application().start("notepad.exe")
time.sleep(2) # 等待应用程序加载
dlg = app.UntitledNotepad
dlg.print_control_identifiers()
```
如果你仍然无法打印出层次结构,请检查你的 Pywinauto 版本是否正确,或者考虑使用其他方法来查看窗口的控件层次结构和属性,例如使用 `inspect.exe` 工具或 Pywinauto 自带的 `ElementInfo` 工具。