![Фотография](https://secure.gravatar.com/avatar/ba58b521df4d06d2a8fbc62c0f6c4aac?s=100&d=https%3A%2F%2Fsoftware-testing.ru%2Fforum%2Fpublic%2Fstyle_images%2Fmaster%2Fprofile%2Fdefault_large.png)
QTP 9.0: Cannot identify object
#1
Отправлено 03 декабря 2009 - 15:41
После определенных действий с данным приложением, эти свойства изменяются, e.g. name = BBBB, text = BBBB, regexpwndtitle = BBBB
причем каждый раз по-разному.
Поэтому я получаю ошибку Cannot identify object, при попытке совершения какого-либо действия, e.g.
Dialog("AAAA").WinButton("More settings").Click
P.S. опыт работы с QTP минимальный, многие вещи непрочитаны, т.к. банально нету времени и нужен за короткое время рабочий скрипт для windows приложения.
Спасибо
#2
Отправлено 03 декабря 2009 - 17:06
А в чем проблема-то, собственно?Добавил простое приложение в Object Repository, он показал его следующие свойства: e.g. name = AAAA, text = AAAA, regexpwndtitle = AAAA.
После определенных действий с данным приложением, эти свойства изменяются, e.g. name = BBBB, text = BBBB, regexpwndtitle = BBBB
причем каждый раз по-разному.
Поэтому я получаю ошибку Cannot identify object, при попытке совершения какого-либо действия, e.g.
Dialog("AAAA").WinButton("More settings").Click
P.S. опыт работы с QTP минимальный, многие вещи непрочитаны, т.к. банально нету времени и нужен за короткое время рабочий скрипт для windows приложения.
Спасибо
P.S.
Полезные ссылки:
1. Как правильно задавать вопросы и ссылки внутри темы
2. Поиск на it4business. Первая ссылка из результатов поиска по запросу "Распознавание объектов" ведет на FAQ.
3. Наглядное пособие по использованию Google. Искомая ссылка в первой пятерке.
4. Яндекс - тоже хорошая поисковая система. Первая же ссылка ведет на подробное объяснение, как решить проблему.
еще один универсальный алгоритм: http://xkcd.com/627/
FAQ лежит тут: http://software-test...testing/139#rec
P.P.S. Вы правда считатете, что у читающих форум знающих людей больше свободного времени, чем у Вас?
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#3
Отправлено 04 декабря 2009 - 10:31
Скорее всего я некорректно задал вопрос.А в чем проблема-то, собственно?
Как обратиться к объекту, если он изменяет своё свойство Name в object repositiry?
#4
Отправлено 04 декабря 2009 - 10:47
Обратиться по имени. Логическое имя в репозитории уникально для объекта и не меняется во времени.Как обратиться к объекту, если он изменяет своё свойство Name в object repositiry?
Для распознавания же объектов задать свойства, которые не меняются.
При этом для задания настроек распознавания можно применять регулярные выражения. Например, для тех свойств, часть значения которых может изменяться, можно оставить постоянную часть, а изменяющуюся часть заменить на .*
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#5
Отправлено 04 декабря 2009 - 16:50
В процессе обычного выполнения теста репозиторий объектов вообще не изменяется. Там не изменяется ничего. Может изменяться только Ваше приложение. И вот в приложении один и тот же объект может иметь разные свойства в разные моменты времени. А в общем случае, то, что отображается на экране как один и тот же объект на разных диалогах/вкладках и т.п. Вашего приложения, может в действительности быть разными объектами с различающимися свойствами.Если я правильно понял, то свойство TestObjName (The object's name as it appears in the object repository) возвращает мне это имя.
Обратиться по имени. Логическое имя в репозитории уникально для объекта и не меняется во времени.
Но оно изменяется во время исполнения скрипта и я не могу заново обратиться, так как не знаю нового, вследствие чего и возникает ошибка Cannot identify object.
Или я не прав?
Итак, у нас есть отправная точка:
Репозиторий во время выполнения теста не изменяется.
Объекты в приложении могут изменяться (т.е. значения свойств этих объектов могут изменяться, сами объекты могут появляться и исчезать)
Теперь вопрос: что такое объект в ОР QTP?
Ответ: это некий набор пар "свойство"-"значение", который QTP запомнил при записи теста, или при добавлении объекта в репозиторий. Каждому такому набору QTP дает уникальное имя, которое отображается в объектом репозитории справа сверху (поле Name)
Вопрос 2. Как QTP понимает, с каким объектом ему надо работать?
Ответ: В тесте указывается имя объекта в ОР. QTP берет набор пар "св-во"-"значение" для этого обекта и ищет среди всех объектов Вашего приложения объект с таким же набором пар "св-во"-"значение". Если ему это удается, и такой объект один, то QTP с ним работает. Если найденных в Вашем приложении объектов, которые удовлетворяют искомым парам "св-во"-"значение", несколько или же ни один не удовлетворяет заданным критериям, то QTP выдает ошибку "Не могу найти объект". Происходит это в том случае, если в Вашем приложении у объекта, с которым Вы работали раньше, изменились какие-то из свойств, которые QTP запомнил для себя, как свойства, по которым он может этот объект распознать.
Поэтому, чтобы QTP мог нормально работать, надо запоминать только значения тех свойств, которые не будут изменяться в процессе работы Вашего приложения.
Какие именно св-ва запоминать для каждого класса объектов задается в диалоге Object Identification. Как с ним работать описано в FAQ, ссылки на который есть в посте.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных