自动化Windows GUI测试 - FindWindowEx和控件类

时间:2010-07-11 17:23:44

标签: c# windows ruby winapi spy++

我继承了一个C#窗口的应用程序,我并不是真的很疯狂。我有一个迫在眉睫的截止日期,我害怕我的一些变化可能对现有功能产生不利影响。

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

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

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

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

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

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

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

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

抱歉这个长度 - 提前感谢您的帮助! 鲍勃

1 个答案:

答案 0 :(得分:0)

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

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