从弹出菜单中选择一个项目

时间:2013-08-20 09:26:08

标签: c# .net winapi

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

我已经想出如何在测试的应用程序中获取不同控件的窗口句柄,这样我就可以点击按钮,使用发送/发布消息输入文本到文本框等,但仍然有一些未解决的问题。

第一个是从弹出菜单中选择一个项目,可以通过按钮单击(TAdvGlowMenuButton类)或右键单击某个地方来触发 - 我甚至看不到任何与Spy ++相关的消息,所以我不知道如何要做到这一点,是否可以按名称选择项目?因为我没有它的身份

第二件事是点击旁边的东西,例如按钮右边的10个像素。 我有按钮手柄,所以我可以得到它的大小和它的父母,但我仍然不知道如何让它在父母的位置 - 任何想法?:)

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

我希望你能帮助我找到它;)

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

1 个答案:

答案 0 :(得分:1)

我的建议是完全放弃邮件发送/发布模式,而是使用UI Automation。自动化测试工具正是UI Automation API的设计目标,它们比SendMessage / PostMessage更强大。

是的,我意识到这与您正在寻找的答案完全相反。但是,如果让消息完成您想要的操作,您将无任何困难。相当数量的应用程序依赖于具有焦点的应用程序,当您收到例如,您的代码完成此假设是完全合理的。一条WM_KEYDOWN消息。测试工具不应将其标记为错误。

我注意到你用C#和.NET标签标记了这个问题。在这种情况下,您可能有兴趣了解UI Automation API已wrapped in the .NET Framework