Перейти к содержимому

Фотография

QTP 9.0: Cannot identify object


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 FullNub

FullNub

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 03 декабря 2009 - 15:41

Добавил простое приложение в 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 приложения.

Спасибо
  • 0

#2 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 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. Вы правда считатете, что у читающих форум знающих людей больше свободного времени, чем у Вас?
  • 0

#3 FullNub

FullNub

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 04 декабря 2009 - 10:31

Спасибо за ссылки, в особенности за картинку - распечатал и вставил в рамку.

А в чем проблема-то, собственно?

Скорее всего я некорректно задал вопрос.
Как обратиться к объекту, если он изменяет своё свойство Name в object repositiry?
  • 0

#4 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 04 декабря 2009 - 10:47

Как обратиться к объекту, если он изменяет своё свойство Name в object repositiry?

Обратиться по имени. Логическое имя в репозитории уникально для объекта и не меняется во времени.
Для распознавания же объектов задать свойства, которые не меняются.
При этом для задания настроек распознавания можно применять регулярные выражения. Например, для тех свойств, часть значения которых может изменяться, можно оставить постоянную часть, а изменяющуюся часть заменить на .*
  • 0

#5 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 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, ссылки на который есть в посте.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных