2011-09-22 150 views
0

我有一个处理各种屏幕报表选项的TC脚本。窗口类名称在每个屏幕上都会更改,因为我希望此脚本可以在翻译的环境中工作,窗口标题也会更改。第一部分正常工作,但如何解释更改的窗口名称?如果我删除标题,TC炸弹具有模糊的窗口识别错误。使对象类名称成为参数

当前代码段(同一个屏幕的标题):

w := p.WaitWindow('*', 'Options', 1, 10000); 
if w.Name='frmBasicOpt' then 
begin 
.... 

是否可以在类名是在这样我就可以离开了标题喂参数?如果是这样,我该怎么做?

头......受到伤害。

谢谢!

回答

2

不知道我理解的任务,但我会尽力帮助到我的理解程度。 因此,窗口类的名称是一个动态的东西,这就是为什么你用通配符掩盖它。但是,如果您能够参数化它,则表明您仍然想要使用类名称。所以,似乎有一种方法可以在测试执行期间从某处获取类名。如果是这样,你可以把类名的变量,这个变量传递给WaitWindow方法作为参数,并掩盖了标题,以避免使用特定语言的字幕:

clsName := ....; // get it from somewhere 
w := p.WaitWindow(clsName, '*', 1, 10000); 
if w.Name='frmBasicOpt' then 
begin 

如果我的理解是不正确的并且没有办法事先知道类名,您可以考虑使用不同的方法来标识选项窗口而不指定标题。可能的解决方案包括:

  1. 当对话框打开时,它变为活动状态。所以,你可以通过Sys.Desktop.ActiveWindow获得对话框。

  2. 如果这是一个MFC应用程序,请注意窗口的ControlID属性 - 它可以在应用程序的代码中设置,用于对象识别。因此,您可以使用FindChild方法通过属性值查找窗口。

  3. 如果窗口中有一些特定于此窗口的子对象,则可以创建一个函数,该对象将获取Process对象的所有子窗口(FindAllChildren),遍历列表并检查其中哪些具有这些窗口特定的子对象。

为这项工作对你有任何帮助吗?如果没有,那么关于你的任务的更多信息可能会帮助我提出其他建议。

亚历克斯

+0

你完全理解 - 抱歉,如果它不清楚!我会尝试你的建议!谢谢! – GreenMtnGal

相关问题