UFT/QTP - не удается найти родительский объект
Я не могу получить доступ к объекту в моем тестовом примере. Объект представляет собой вкладку, прикрепленную к (под) окну в моем приложении. До и после Тестового случая объект и шпион обнаруживают вкладку и окно, к которому присоединен вклад, но во время выполнения тестового примера появляется ошибка, показанная ниже.
Не удается найти родительский объект "[ActiveX]" "[Window]" (класс Window). Убедитесь, что родительские свойства соответствуют объекту, отображаемому в данный момент в вашем приложении.
Я получаю доступ к объекту так:
VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab")
Я новичок в UFT, поэтому я некоторое время искал и нашел некоторые решения, но они, похоже, не работают для меня, потому что они всегда имели отношение к тестированию браузера, а не к приложению.
2 ответа
Предупреждение: подробное объяснение приведено ниже, вы можете перейти к последнему абзацу, чтобы порекомендовать быстрый выигрыш.
Когда UFT идентифицирует объекты, он делает это сверху вниз, ваша иерархия объектов:
VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab")
И UFT сказал, что:
Не удается найти родительский объект "[ActiveX]" "[Window]" (класс Window).
Это означает, что идентификатор нашел VbWindow("ApplicationWindow")
но не смог найти Window("SubWindow")
, Попробуйте выделить VbWindow
чтобы убедиться, что UFT идентифицирует объект, который вы ожидаете. Затем используйте шпион объекта, чтобы осмотреть окно, которое, по вашему мнению, должно найти UFT. Затем сравните свойства в хранилище объектов со свойствами окна, которое вы видите, и найдите, как эти описания отличаются.
В качестве ярлыка вы можете попробовать использовать режим обслуживания обслуживания, который должен выполнить эти шаги для вас и предложить способ исправить тест.
Просто мысль, чтобы определить причину проблемы.
1. Попробуйте использовать контейнер верхнего уровня (пропуская контейнер следующего уровня) и проверьте наличие своего родителя.
VbWindow("ApplicationWindow").ActiveX("Tab")
2. Проверьте свойства до и после. Я имел в виду бок о бок проверки. Может быть вероятность несоответствия собственности.
3. Используйте метод Обновить объект.
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")