TestComplete无法通过2个属性找到对象

时间:2014-08-14 15:51:45

标签: testcomplete

我对TestComplete如何通过两个属性

查找对象有疑问

我通过某个属性1和值1找到所有对象,然后选择那些属性2等于值2,得到6个对象

然后我按属性2和值2找到所有对象,然后选择属性1等于值1的那些对象,再次得到6个对象

然后传递给FindAll两个属性并获得零对象

var p1 = "NewActionList"
var p2 = "titleBar"


var x1 = Sys["FindAll"](["NativeSlObject.Parent.Name.OleValue"], [p1], 100)
var x2 = Sys["FindAll"](["Parent.NativeSlObject.Parent.Parent.Name.OleValue"], [p2], 100)

x1 = new VBArray(x1).toArray()
x2 = new VBArray(x2).toArray()

for (var i = 0; i < x1.length; i++)
{
  if (x1[i].Parent.NativeSlObject.Parent.Parent.Name.OleValue == p2)
  {
    Log["Message"]("x1")
  }
}

for (var i = 0; i < x2.length; i++)
{
  if (x2[i].NativeSlObject.Parent.Name.OleValue == p1)
  {
    Log["Message"]("x2")
  }
}

var x = Sys["FindAll"](["NativeSlObject.Parent.Name.OleValue", "Parent.NativeSlObject.Parent.Parent.Name.OleValue"], [p1, p2], 100)
x = new VBArray(x).toArray()
Log["Message"](x.length)

获得x1六次,x2六次,0

2 个答案:

答案 0 :(得分:0)

FindAll正在搜索一个具有您指定的参数的对象: ativeSlObject.Parent.Name.OleValue = p1
Parent.NativeSlObject.Parent.Parent.Name.OleValue = p2

对象树中是否有具有此类属性的对象?

答案 1 :(得分:0)

我认为即使有效,这种搜索也会相当缓慢。我建议您使用更简单的搜索条件在几个步骤中搜索所需的对象。

此外,您可以更轻松地使用名称映射功能及其Required ChildrenExtended Find功能。