2013-03-05 93 views
2

我正在编写一个C#应用程序来执行传统Win32应用程序的测试自动化。这些测试需要运行应用程序,按下按钮,并通过阅读标签文本来验证结果。我的测试平台仅限于.NET 2.0,因此我的应用程序无法使用System.Windows.Automation.NET从无标签的标签中读取文本

有关于如何使用user32.dll中找到的WinAPI调用与控件(如按钮)进行交互的丰富信息。但是,标签不是控件,并且没有自己的hWnd句柄,在该句柄上使用WM_GETTEXT消息,并且我一直无法找到如何提取其文本。

我过去曾经使用企业(昂贵)测试软件,能够将标签识别为对象并阅读文本。该软件中的帮助文件模糊地解释了它是如何完成的,并且通过监视Windows库调用以某种方式完成。

那么关于如何捕获标签文本在.NET中的任何想法,可能使用Windows DLL?

+0

你怎么知道标签不是控件?通常,这些标签通常具有'Static'的窗口类。你有没有使用Spy ++(从Visual Studio)或类似的工具来验证你的断言标签不是控件? – JimEvans 2013-03-06 11:25:21

+0

我试过Spy ++以及开源的managedwinapi工具/库。这些工具在基于.NET的部分代码上工作 - 这些标签是使用hWnd句柄的控件。但是,绝大多数代码都是老式的C/C++ Win32东西。在这些表单上,标签不可检测为对象。我甚至尝试监视事件,但无法检测到标签更改时发生的任何事件。 – nicholas 2013-03-06 15:53:42

+0

“真正老式的C/C++ Win32东西”也有标签的窗口句柄。如果这些在Spy ++下没有显示出来,那么窗口在窗口上使用某种直接绘图来改变文本。 – JimEvans 2013-03-06 16:40:12

回答

0

我假设您无法控制旧版Win32应用程序中的代码。

所以,这可能是一个可怕的想法(不,它实际上是一个可怕的想法)。但是作为最糟糕的情况,你可以1)以编程方式将take a screen capture的活动窗口,然后2)OCR得到的图像(可能与this)。