Давайте говорить я прохожу Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox")
к функции:Как я могу получить логическое имя тестового объекта (существующего в связанном общем OR)?
MyFunction (Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox"))
Позже, функция хочет войти в логическое имя принятого тест-объекта (в данном случае, конечно, «MyBox «).
Как это можно сделать?
Свойство объекта «имя» возвращает имя, которое было создано, если вы повторно добавляете тестовый объект. Для логического имени нет (документированного) свойства тестового объекта. Свойства объекта времени выполнения can't возможно содержат имя, так как это не имя из AUT GUI.
Так что, я думаю, что тестовый объект не знает его имени. Только репозиторий «знает», под каким именем хранится тестовый объект.
Поэтому мне нужно будет осмотреть сам репозиторий, а не тестовый объект.
API ObjectRepositoryUtil
API позволяет мне (через GetChildren
или другие методы) найти тестовый объект в коллекции тестовых объектов репозитория и использовать метод GetLogicalName
для получения его имени. Хорошо.
Но единственный способ получить это для работы - получить ссылку на репозиторий на loading it. У меня создается впечатление, что этот API предназначен для манипулирования (или анализа) репозиториев за пределами QTP, а не из тестового прогона. Я не хочу повторно загружать репозиторий. Я хочу посмотреть тестовый объект в одном из уже загруженных репозиториев.
RepositoriesCollection
API, может сказать мне, которые загружаются (по их имени и пути), но она не обеспечивает средство получения ссылки на экземпляр объекта, который представляет один из этих хранилищ.
Так как может я получить ссылку на уже загруженный репозиторий, так что я могу использовать GetLogicalName
?
Или, как правило, спрашивает: учитывая ссылку на «обычный» тестовый объект, содержащийся в общем хранилище текущего действия, как я могу узнать его логическое имя программным путем?
Если есть какой-то сверхразумный мастер QTP, ла-Мотти, который знает, что этого не может быть сделано, я действительно ценю ответ от него, даже если он читает «это не может быть сделано», если это правда.
В случае, если вам интересно, «TestObjName» является своего рода документированным ... но не для многих объектов. Найдите его в помощи UFT, и вы увидите, что он указан в отношении таких вещей, как WinButton или другие элементы управления Windows и ActiveX, но он должен работать для всех объектов. – Xiaofu
Можно ли узнать, хранится ли тестовый объект в OR или генерируется описанием? TestObjName возвращает имя по умолчанию, которое присваиваемый дескрипцией объект получает, если он хранится в OR. – TheBlastOne