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")
Другие вопросы по тегам