我正在编写一个C#应用程序来执行传统Win32应用程序的测试自动化。这些测试需要运行应用程序,按下按钮,并通过阅读标签文本来验证结果。我的测试平台仅限于.NET 2.0,因此我的应用程序无法使用System.Windows.Automation
。.NET从无标签的标签中读取文本
有关于如何使用user32.dll中找到的WinAPI调用与控件(如按钮)进行交互的丰富信息。但是,标签不是控件,并且没有自己的hWnd
句柄,在该句柄上使用WM_GETTEXT
消息,并且我一直无法找到如何提取其文本。
我过去曾经使用企业(昂贵)测试软件,能够将标签识别为对象并阅读文本。该软件中的帮助文件模糊地解释了它是如何完成的,并且通过监视Windows库调用以某种方式完成。
那么关于如何捕获标签文本在.NET中的任何想法,可能使用Windows DLL?
你怎么知道标签不是控件?通常,这些标签通常具有'Static'的窗口类。你有没有使用Spy ++(从Visual Studio)或类似的工具来验证你的断言标签不是控件? – JimEvans 2013-03-06 11:25:21
我试过Spy ++以及开源的managedwinapi工具/库。这些工具在基于.NET的部分代码上工作 - 这些标签是使用hWnd句柄的控件。但是,绝大多数代码都是老式的C/C++ Win32东西。在这些表单上,标签不可检测为对象。我甚至尝试监视事件,但无法检测到标签更改时发生的任何事件。 – nicholas 2013-03-06 15:53:42
“真正老式的C/C++ Win32东西”也有标签的窗口句柄。如果这些在Spy ++下没有显示出来,那么窗口在窗口上使用某种直接绘图来改变文本。 – JimEvans 2013-03-06 16:40:12