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

Фотография

Working with custom controls in QTP after (delphi) application restart


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

#1 chernoslav

chernoslav

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

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Станислав Чернов

Отправлено 18 октября 2010 - 13:44

Хочу разобраться с ошибкой выполнения теста, которая вываливается без видимых причин по вине, как мне кажется QTP


Дано приложение, написанное на Delphi и изобилующее нестандартными контролами. Для их определения были написаны xml файлы extensiblity и некоторая добавка, которая вкомпилируется в само приложение.

QTP версии 10, до этого был 9.5, Windows XP со всеми апдейтами и прочее.
Скажу сразу, обновился сегодня до 11 версии QTP, проблема пока не повторилась, но вдруг.

Итак, тест упрощённо выглядит так:
Скрытый текст


Тест падает на последней строке с кодом -214746725 "General run-time error" и деталями "Неопознанная ошибка". Подробности ниже.

Итак, запуск, логин на сервер, выход.
Первая часть, запуск, выглядит так:
Скрытый текст

и отрабатывает независимо ни от чего.

Вторая часть заполняет диалоговое окошко логина, там тоже нет проблем, все контролы там более-менее стандартные (или был маппинг к стандартным), с третьей частью проблемы.

Скрытый текст


При обращении к меню в первый раз всё происходит хорошо. При обращении второй раз тест вываливается с ошибкой на строке obj.Select targetMenuPath.

Extensibility:
Скрытый текст


Могу ещё привести код на Delphi, который в приложение встраивается, но пока не хочу. Этот модуль писал не я, он три года работает.. Хотя там тоже есть странности.
  • 0

#2 ch_ip

ch_ip

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

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


Отправлено 18 октября 2010 - 16:50

У меня есть подозрение, что падает, потому что QTP пытается работать с несуществующим объектом:
когда мы работаем в первый раз, то создается привязка тестового объекта QTP к объекту внутри приложения.
Когда мы пытаемся работать с тем же объектом после перезапуска приложения в контексте одного и того же теста может получиться так, что мы не заново ищем объект в системе, а берем тот же самый тестовый объект внутри QTP, который был создан в первый раз. Но этот тестовый объект указывает на уже несуществующий объект внутри приложения (поскольку мы приложение перезапустили, и там объекты пересоздались). Отсюда и возникает ошибка, которую вы видите.
11-я версия QTP может внутри себя запускать метод init для тестовых объектов, который заново перепривязывает существующий тестовый объект к объекту внутри приложения, поэтому на новой версии работает, а на старой нет.
Но завтра постараюсь посмотреть более точно.

Кстати, для проверки догадки, можно попробовать вставить вызов obj.init перед obj.Select. Если после этого будет нормально работать, значит проблема в буферизации объектов. Если нет, то проблема все равно может быть в буферизации, поскольку я не знаю, является ли метод init открытым для тестовых объектов Delphi.
  • 0

#3 chernoslav

chernoslav

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

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Станислав Чернов

Отправлено 18 октября 2010 - 19:34

Спасибо, про obj.init я запомню, но откатываться на 10ую версию, чтобы проверить, всё же не буду :)

Если работает с "существующими" объектами, то странно, что всякие формочки заполняются корректно.
  • 0


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

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