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

3
我继承了一个C#窗口应用程序,但并不是很喜欢它。我面临着一个逼近的截止日期,非常担心我的一些更改可能会对现有功能产生不利影响。
我在RoR方面有业余背景,并且对该框架中的测试比较熟悉(使用RSpec和Cucumber)。
我喜欢有定期运行的测试脚本,并愿意花费个人时间为这个特定项目开发这些脚本。我从PragProg.com购买了一本关于使用Ruby进行脚本化GUI测试的书籍(http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby)。到目前为止,我很喜欢所看到的内容,我认为这应该能够很好地工作。
不幸的是,我对Windows应用程序开发缺乏基本的理解。我正在通过Win32API调用FindWindowEx来“尝试”检索我的应用程序中的子控件。

我感到困惑的一大部分是如何获取我要捕获的控件的类名。文本中提供的示例如下:

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

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

我读过一些关于MS's SPY ++的非常旧的帖子,但这些帖子似乎已经过时了(或者由于某种原因在我安装vs2010时没有安装)。

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

很抱歉内容有点长-提前感谢您的帮助! 鲍勃

1个回答

0

最好的方法是安装组件,以便获取Spy++,这是我知道的最好的方法,特别是如果您没有原始控件的源代码,这些控件可能来自库或可能是Microsoft提供的一些标准ActiveX控件。

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


那么Spy++仍然是一个有效的工具吗?太好了 - 我会重新访问安装程序,看看为什么我在2010实例中没有得到它。是否有任何类似的独立实用程序可以完成相同的事情?-- 不用理会 - 我刚刚找到了这篇文章:https://dev59.com/VHI-5IYBdhLWcg3whYwr - Bobby B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接