【问题标题】:TestComplete/JScript- Using a variable in an object pathTestComplete/JScript- 在对象路径中使用变量
【发布时间】:2016-02-12 16:14:07
【问题描述】:

我正在使用带有 JScript 的 TestComplete 测试一个网页,该网页包含我声明为变量的元素,以便以后更容易测试该元素。他们都有这样的路径:

var check1 = Window.Panel(1).Panel(2).Panel(0).Panel(0).Panel(0).Panel(0).Panel(1).Panel(0).Label(0).Checkbox(0)

元素是动态的,因此在运行测试时不知道有多少。我希望有某种方法可以循环并声明元素,但这将涉及像这样声明元素:

var check1 = Window.Panel(1).Panel(2).Panel(0).Panel(0).Panel(0).Panel(0).Panel(1).Panel(0).Label(x).Checkbox(0)

其中 x 是计数器变量。问题是 TestComplete 将其视为文字路径并且不将 x 识别为变量。

有没有什么方法可以使用 JScript 使用 TestComplete 来做到这一点?或者将字符串转换为对象?我想我也可以使用它。

【问题讨论】:

  • 你能把给'x'赋值的代码放在这里吗?
  • x=1;它只是一个可以通过循环递增的变量。
  • 嗯,您可以使用 aqConvert.VarToInt 方法将变量的值隐式转换为整数。但是,即使没有转换,它也应该具有有效的整数类型。由于我看不到您如何声明“x”变量并对其进行操作,因此我怀疑这有问题。

标签: ui-automation jscript testcomplete


【解决方案1】:

我的猜测是,由于您将引用存储在变量 check1 中,因此变量 x 已更新,但变量 check1 中的 x 仍保持其原始值 (1)。

解决方法 在变量中保持路径的第一部分为静态,然后更新 x 并将其分配给标签。

var path = Window.Panel(1).Panel(2).Panel(0).Panel(0).Panel(0).Panel(0).Panel(1).Panel(0);

// path to the Checkbox
path.Label(x).Checkbox(0);

// or if you want to loop over it
for (var x = 0, len = 8; i < len; x += 1) {
    if (path.Label(x).Checkbox(0).value === 'something') {
        console.log('hooray!');
    }
}

【讨论】:

  • 这就是我要解决的问题。某种使用变量的方法,以便它在循环时获取新值。这在我的测试中经常出现,所以它会清理很多我必须做的工作。
  • 我已经调整了我的答案。如果您还有其他问题或不清楚,请告诉我。
  • 很抱歉这么久才回复你,但我终于可以尝试这个方法了。它完美地工作。我能够动态声明对象。我实际上对其进行了一些调整,以使用 while 循环而不是 for 循环。我将对象存储在一个数组中。
  • 很高兴听到这个消息,请记住 for 循环要快一些,并且不会像 while 循环那样永远循环。
  • 是的,我明白了,但是由于我不知道要映射的元素有多少,所以我不能使用 for 循环。我有一个转义条件:如果元素不存在,则退出循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多