Вы наверное меня неправильно поняли.
скрипт выглядит так:
...
1.Написали его присвоили siteName = http://google.com запустили,
2.Появляется меседж бокс "Exist" Тест прошёл
3.Закрываем браузер
Я вас отлично понял. Но, во-первых, в первом посте не было ничего про закрытие браузера между запусками скрипта, потому и уточнил, ибо это первая причина проблемы, которая приходит на ум. Если же отбросить эту самую тривиальную причину, то для дальнейшего анализа было необходимо понять, каким образом у вас распознается кнопка "поиск Google". Поэтому я 2 (два) раза написал вам о том, что
2. Нужен скриншот Вашего OR, с фокусом на кнопке "поиск Google"
Вероятно, моя ошибка оказалась в том, что я употребил привычное для меня сокращение OR, поэтому вместо скриншота объектного репозитория получил скриншот из Object Spy. Он нам мало чем поможет, поскольку он на всех компьютерах одинаковый, в отличие от настроек распознавания элементов (Tools -> Object Identification), которые задаются для всего приложения QuickTest Pro на конкретной машине, и от которых зависит, какую информацию QTP собирает об объектах того или иного класса.
Однако ваш код и последующие комментарии о том, как себя ведет скрипт:
4.В существуюем скрипте призваиваем siteName =http://ya.ru запускаем скрипт
5.Когда дело доходит до If-a, QTP - долго думает, затем появляется меседж бокс "Exist" - а не должен
,позволяют предположить следующую причину проблему, а точнее 3 причины:
1. Вы получили этот тест путем записи ваших действий встроенным рекордером.
2. Вы не меняли настройки распознавания для Web-объектов
3. У вас отключена опция "Disable Smart Identification during the run session"
Если моя догадка верна, то у вас происходит следующее:
QTP всегда находит браузер и страницу. Это потому что по умолчанию для классов Browser и Page не задано вообще никаких свойств, по которым они должны распознаваться. Поэтому и при записи скрипта, и потом, при воспроизведении, QTP обращается к первому открытому браузеру и странице в нем (и при таких настройках ему совершенно все равно, какую вы там открыли страницу: google.com, yandex.ru или
http://software-testing.ru/forum).
Если бы были заданы конкретные настройки, например title для браузера и страницы, то во втором случае до поиска кнопки дело бы даже не дошло, поскольку QTP не нашел бы страницу (у гугла и яндекса разные заголовки :))
Дальше — интереснее. Для класса webButton заданы более/менее работоспособные настройки идентификации в виде "html tag", "name" и "type". И вроде как если опираться только на эти свойства, кнопка "поиск Google" никак не может находиться на сайте яндекса. Тут надо заметить, что для всех объектов в Web Environment включена опция "Enable Smart Identification". Это означает, что по факту QTP запоминает для объектов сильно больше свойств, нежели указано в листах Mandatory и Optional Properties внутри Object Identifiaction. В принципе, ничего страшного в запоминании лишних свойств нет, и часто это удобно, особенно при работе с ActiveScreen и добавлении проверок после окончания записи. "Самое страшное" — это непосредственно механизм Smart Identitfication, который включается, когда QTP не может обнаружить объект из объектного репозитория по значениям Mandatory и Optional Properties. Подробно про алгоритм можете прочитать в справке. Вкратце суть такая: он отбрасывает всю информацию из Mandatory и Optional Properties и пытается найти объект заново по сопоставлению свойств, записанных для Smart Iddentification. И если в какой-то момент у него получается только 1 объект, соответствующий какому-то подмножеству этих свойств, то QTP решает, что это как раз тот объект, который и был нужен.
Алгоритм такого распознавания весьма ненадежен, поэтому я всегда рекомендую данную фичу отключать для всех тестов, благо сделать это очень просто:
File -> Settings -> Run -> включить опцию "Disable Smart Identification during the run session".
Disable SI during test run in Test settings dialog.png 12,27К
21 Количество загрузок:Поскольку алгоритм идентификации включается только после принятия решения, что искомый объект в репозитории не найден, то и возникает тот таймаут, в течение которого QTP долго думает — это стандартный таймаут на поиск объекта. После него срабатывает Smart Identification и решает, что единственная кнопка на странице ya.ru и есть искомая, поскольку ее класс и тег совпадают с тегом кнопки гугла (удивительно, правда? :)). QTP решает, что объект нашел, поэтому и во втором случае у вас тест выдает "Exist".
Работу Smart Identification отлично видно в логе:
Smart Identification на примере Google И Yandex.png 87,91К
21 Количество загрузок:.
Проверьте, не содержит ли ваш лог упоминание о Smart Identification. Если причина не в нем, будем думать дальше.
Кстати, спасибо за пост, — получился отличный пример для тренингов. Возьму на заметку.