如何区分pywinauto上的两个控件
How to differentiate two controls on pywinauto
我正在尝试使用 pywinauto 创建宏生成器。我正在开发两个应用程序,宏记录器和宏播放器。记录器监视每个鼠标和键盘事件,然后将其保存到 json 文件,以便宏播放器能够重新创建事件。
当用户单击某个元素时,记录器会使用以下代码转换该鼠标坐标 UIAWrapper
:
def coords_to_UIAWrapper(coords):
x, y = coords
elem = IUIA().iuia.ElementFromPoint(tagPOINT(x, y))
element = UIAElementInfo(elem)
wrapper = UIAWrapper(element)
return wrapper
然后记录器将事件和 wrapper.window_text()
保存在 json 文件中,如下所示:
{
"events": [
{
"device": "mouse",
"action": "press",
"text": "<TODOS>"
},
{
"device": "mouse",
"action": "release",
"text": "<TODOS>"
}
]
}
这是按钮的图像:
但是现在问题出现了,因为程序有多个按钮 window_text
等于 <TODOS>
:
区分元素 我以为我可以使用以下属性(inspect.exe):AutomationId, ClassName, RuntimeId, Name, LocalizedControlType
,但是LocalizedControlType, ClassNAme and Name
是所有按钮都相同,每次我打开应用程序时 AutomationId and RuntimeId
都是不同的。那么,我如何区分两个元素,以便能够序列化事件并将其复制到宏播放器中。
有趣的作品!我们正在开发将成为 pywinauto 一部分的脚本记录器(可见的拉取请求将很快创建)。您可以在这里查看架构:'recorder/event_patterns' branch in the fork. I would like to invite you to the discussion soon. Some help would be great. There are still many issues in milestone pywinauto 0.7.0
解决您的问题的主要想法是保留整个 UI 树以及所有 parent 和 children。如此完整的 window 规范可能有助于通过 parent 区分按钮。 best_match
算法中还有其他规则来分隔事物:Getting Started Guide -> How to know magic attribute names.
我正在尝试使用 pywinauto 创建宏生成器。我正在开发两个应用程序,宏记录器和宏播放器。记录器监视每个鼠标和键盘事件,然后将其保存到 json 文件,以便宏播放器能够重新创建事件。
当用户单击某个元素时,记录器会使用以下代码转换该鼠标坐标 UIAWrapper
:
def coords_to_UIAWrapper(coords):
x, y = coords
elem = IUIA().iuia.ElementFromPoint(tagPOINT(x, y))
element = UIAElementInfo(elem)
wrapper = UIAWrapper(element)
return wrapper
然后记录器将事件和 wrapper.window_text()
保存在 json 文件中,如下所示:
{
"events": [
{
"device": "mouse",
"action": "press",
"text": "<TODOS>"
},
{
"device": "mouse",
"action": "release",
"text": "<TODOS>"
}
]
}
这是按钮的图像:
但是现在问题出现了,因为程序有多个按钮 window_text
等于 <TODOS>
:
区分元素 我以为我可以使用以下属性(inspect.exe):AutomationId, ClassName, RuntimeId, Name, LocalizedControlType
,但是LocalizedControlType, ClassNAme and Name
是所有按钮都相同,每次我打开应用程序时 AutomationId and RuntimeId
都是不同的。那么,我如何区分两个元素,以便能够序列化事件并将其复制到宏播放器中。
有趣的作品!我们正在开发将成为 pywinauto 一部分的脚本记录器(可见的拉取请求将很快创建)。您可以在这里查看架构:'recorder/event_patterns' branch in the fork. I would like to invite you to the discussion soon. Some help would be great. There are still many issues in milestone pywinauto 0.7.0
解决您的问题的主要想法是保留整个 UI 树以及所有 parent 和 children。如此完整的 window 规范可能有助于通过 parent 区分按钮。 best_match
算法中还有其他规则来分隔事物:Getting Started Guide -> How to know magic attribute names.