0

我正在尝试制作一个应用程序来测试现有应用程序的某些功能,并且我希望它不依赖于窗口大小并且不需要聚焦窗口等。

我已经想出了如何在测试的应用程序中获取不同控件的窗口句柄,以便我可以单击按钮、在文本框中输入文本等,但仍然有一些未解决的问题。

首先是从弹出菜单中选择一个项目,该项目可以通过按钮单击(TAdvGlowMenuButton 类)或右键单击某处触发——我什至在 Spy++ 中看不到任何与之相关的消息,所以我不知道该怎么做,是否可以按名称选择项目?因为我没有它的 id

第二件事是单击某物旁边,例如按钮右侧的 10 个像素。我有按钮手柄,所以我可以得到它的大小和它的父级,但我仍然不知道如何让它在父级内部的位置 - 有什么想法吗?:)

还有一个快速的,但我不相信这是可能的 - 我可以以某种方式在测试的应用程序中获得标签的位置吗?我什至在 Spy++ 中都看不到它。

我希望你能帮我找出来;)

编辑:我忘记了最重要的事情:P,如果可能的话,我想通过发送/发布消息来实现它。

4

1 回答 1

1

我的建议是完全放弃消息发送/发布模型,而是使用UI Automation。自动化测试工具正是 UI 自动化 API 的设计目的,它们比 SendMessage/PostMessage 功能强大得多。

是的,我意识到这与您正在寻找的答案完全相反。但是,您将有无穷无尽的麻烦来获取消息以执行您想要的操作。WM_KEYDOWN其中相当一部分依赖于具有焦点的应用程序,当您收到例如消息时,您的代码做出这种假设是完全合理的。测试工具不应将其标记为错误。

我注意到您已经用 C# 和 .NET 标记标记了这个问题。在这种情况下,您可能有兴趣了解 UI 自动化 API 已包装在 .NET Framework中。

于 2013-08-20T09:46:41.460 回答