UFT / QTP - 找不到对象父对象

时间:2016-11-04 07:46:32

标签: testing vbscript qtp hp-uft

我无法访问测试用例中的对象。 该对象是一个Tab,附加到我的应用程序中的(Sub)窗口。 在测试用例之后,Tab和附加选项卡的窗口是由对象间谍发现的,但是当测试用例运行时,出现以下错误。

找不到“[ActiveX]”对象的父“[Window]”(类Window)。验证父属性是否与应用程序中当前显示的对象匹配。

我访问该对象:

//current date
var cd = moment().format("DD-MM-YYYY");
//5 days into the future
var nd = moment(cd, "DD-MM-YYYY").add(5, 'days').format('DD-MM-YYYY');
//get all dates from today to 5 days into the future

console.log("start",cd);
console.log("end",nd);

var getDates = function(startDate, endDate) {
  var dates = [],
      currentDate = startDate,
      addDays = function(days) {
        var date = new Date(this.valueOf());
        date.setDate(date.getDate() + days);
        return date;
      };
  while (currentDate <= endDate) {
    dates.push(currentDate);
    currentDate = addDays.call(currentDate, 1);
  }
  return dates;
};

// Usage
var dates = getDates(cd, nd);                                                                                                           
dates.forEach(function(date) {
  console.log(date);
});

我是UFT的新手,所以我搜索了一段时间并找到了一些解决方案,但它们似乎不适合我,因为它们总是与浏览器测试相关,而不是应用程序。

2 个答案:

答案 0 :(得分:0)

只是想一想找出问题的根本原因。

1.尝试使用顶级容器(跳过下一级容器)并检查您是否存在父级容器。

VbWindow("ApplicationWindow").ActiveX("Tab")

2.检查前后的属性。我的意思是并排验证。可能存在财产错配的可能性。

3.使用Refresh Object方法。

Window("Calculator").RefreshObject

4.从Tab对象中查询您的父级

Set objParent =  VbWindow("ApplicationWindow").ActiveX("Tab").GetTOProperty("parent")
Msgbox objParent.GetROProperty("text")
Set objParent =  VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab").GetTOProperty("parent")
Msgbox objParent.GetROProperty("text")

答案 1 :(得分:0)

警告:下面会有详细说明,您可以跳到最后一段,以获得建议的快速获胜。

当UFT从上到下识别对象时,您的对象层次结构为:

VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab")

UFT说:

  

找不到“[ActiveX]”对象的父“[Window]”(类Window)。

这意味着ID 找到VbWindow("ApplicationWindow")但无法找到Window("SubWindow")。尝试突出显示VbWindow以确保UFT识别您期望的对象。然后使用对象间谍检查您认为UFT应该找到的窗口。然后将对象存储库中的属性与您看到的窗口的属性进行比较,并找出这些描述的不同之处。

作为一种快捷方式,您可以尝试使用Maintenance Run Mode,它应该为您执行这些步骤,并建议一种方法来修复测试。