3

我继承了一个 C# 窗口的应用程序,我对此并不着迷。我的最后期限迫在眉睫,我害怕得要死,我的一些更改可能会对现有功能产生不利影响。

我有 RoR 的业余爱好者背景,我对在该框架中进行测试(使用 RSpec 和 Cucumber)相当满意。

我喜欢拥有可以定期运行的测试脚本,并且我愿意花费我的个人时间为这个特定项目开发这些脚本。我从 PragProg.com 购买了一本关于使用 Ruby 进行脚本式 GUI 测试的书 ( http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby )。到目前为止,我正在挖掘我所看到的,我认为这应该很好用。

不幸的是,我对 Windows 应用程序开发缺乏基本的了解。我正在调用FindWindowEx(通过 Win32API)以“尝试”在我的应用程序中检索子控件。

我困惑的很大一部分是我应该如何检索我试图捕获的控件的类名。文中提供的示例如下:

    edit = find_window_ex.call @main_window, 0, 'ATL:00434310', nil

其中@main_window 是我的应用程序的主窗口句柄,'ATL:...' 是文本框区域的类。没有解释作者是如何得出“ATL:...”的。

我已经阅读了一些关于 MS 的 SPY++ 的非常古老的帖子,但那些似乎已经过时(或者由于某种原因,当我安装 vs2010 时它没有安装)。

那么,找到与 findWindowEx 调用一起使用的控件类的最佳方法是什么?我确实有源代码 - 我应该从那里提取吗?如果我没有源代码并且想要自动化应用程序怎么办?是否有一个实用程序可以让您以某种方式“浏览”正在运行的应用程序上的控件?

对不起,长度 - 提前感谢您的帮助!鲍勃

4

1 回答 1

0

最好的办法是安装组件以便获得 Spy++,这是我所知道的获取实际类名的最佳方法,尤其是。如果您没有原始控件的源,它可能来自库或 Microsoft 提供的某些标准 ActiveX 控件。

ATL 类名可能是用于使用Microsoft Active Template Library (ATL) 开发的控件,这是一个 C++ 模板库,它显着简化了 C++ 中 ActiveX 控件和 COM 对象等的开发。

于 2010-07-11T17:35:47.447 回答