0

我有一个 TC 脚本,可以处理各种屏幕的报告选项。每个屏幕上的窗口类名称都会发生变化,因为我希望这个脚本在翻译的环境中工作,所以窗口标题也会发生变化。第一部分工作正常,但我如何考虑更改窗口名称?如果我删除标题,TC 会以模棱两可的窗口识别错误进行轰炸。

当前代码片段(带有一个屏幕的标题):

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

我可以将类名设置为输入的参数,以便省略标题吗?如果是这样,我该怎么做?

头……疼。

谢谢!

4

1 回答 1

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) 的所有子窗口,遍历列表并检查其中哪些具有这些特定的子对象。

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

亚历克斯

于 2011-09-23T09:30:17.483 回答