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

iFomin

Регистрация: 16 фев 2007
Offline Активность: 20 мая 2013 16:41
-----

Мои сообщения

В теме: QTP Работа с кастомными табами

27 июля 2011 - 18:51


QTP этот таб видит как отдельный объект или нет?
Если видит и распознает как WebObject, то вызывайте метод Click у этого WebObject', а распознавайте по тексту, который он видит у этого объекта
Если не видит, то придется помучиться подольше –– .Net Extensibility вам в помощь.
Версия QTP какая?


Версия QTP 11. Да извиняюсь забыл указать что данное приложение WIN. QTP видит этот таб как отдельный элемент типа swfObject, но нажатие происходить пока только по координатам. Спасибо за наводку на .Net Extenibility будем разбираться.

Я тут, наверное, уже поздно, но вброшу еще пару мыслей:
1) Можно попробовать просто нажать кнопку "Вправо", когда фокус находится внутри этого грида. В большинстве фреймворков это приводит к переключению на следующий таб. Дальше можно дополнительно валидировать, какой из табов активен, ну и цикл.
2) Взять childObjects у родительского объекта, пройтись итератором по всем детям и взять у них getVisibleText. По найденному объекту уже кликнуть. Будет работать не слишком быстро, но довольно надежно.

Это на случай, если с Extensibility не хочется разбираться или не получится.

В теме: QTP 10 - как пройти тест н-е количество раз?

27 июля 2011 - 18:44


4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.

Отлично работает. Мы на этом построили вывод стектрейса в логи

Хм, а вот интересно, как вы стектрейсы собираете? Переопределяете RunAction, в методы вставляете маркеры? Или я о каких-то других стектрейсах думаю..

В теме: QTP 10 - как пройти тест н-е количество раз?

18 июля 2011 - 21:53

Тут очень много простых способов:
1) Устанавливать на каждой итерации переменную окружения Windows
2) Писать счетчик в лог или в (первую строку) DataTable на каждой операции
3) Определить другое условие выхода из цикла (например, состояние переменной окружения)
4) На попробовать - создать глобальный объект, в нем хранить счетчик, а в деструкторе записывать этот счетчик в лог, или показывать message box. Не уверен, что в QTP сработает.

Если хочется к пунтам 1/2 добавить дополнительной автоматизации, можно запускать QTP-сессию через COM, тогда сможете перехватить момент остановки теста по любому условию и выполнить дальше произвольный код.

В теме: HP QTP и подключение библиотек

18 июля 2011 - 21:44

Добрый день.
Проблема в описании действий recovery scenario
Там жестко прописаны пути до библиотеки.
Как можно указать библиотеку без пути?
Еще если в сценариях использовать туже библиотеку, что и в тесте, то при срабатывании сценария тест останавливается с ошибкой двойного декларирования.
Это так и должно быть?
Для сценариев надо писать свои библиотеки?

С областями видимости в QTP ничего не понятно, поэтому лучше с этим поаккуратнее. С приведенной проблемой Dim можно бороться несколькими способами:
1) Не использовать Dim вообще. Если нужно расширить область видимости - использовать вместо 'Dim strVar' что-то вроде 'strVar=""'. Это просто, но опасно.
2) Оборачивать исполняющийся код библиотек в инклюд-гарды. У нас это глобальный, всегда определенный массив со списком уже заинклюженных библиотек, определенная в каждой библиотеке уникальная константа, которая добавляется в этот массив в самом начале исполнения библиотеки, и функция SafeInclude, которая не исполняет запрошенную библиотеку, если ее константа присутствует в массиве или если эта библиотека присутствует в списке подключенных библиотек в свойствах текущего теста.
3) В библиотеках определять классы, а непосредственно в коде уже создавать экземпляры объектов. Опционально с этим использовать singleton, чтобы всегда иметь не больше одного объекта нужного класса. В таком случае можно будет безопасно инклюдить любую библиотеку сколько угодно раз (кроме бесконечного числа).
4) Писать для сценариев отдельную библиотеку, использующую только гарантированно уже подключенные библиотеки.

У нас используется комбинация этого всего, особых проблем не имеем.
Рекомендую написать-таки менеджер библиотек, чтобы упростить себе жизнь при разростании фреймворка.

В теме: Маргарита Шлыкова: White – использование библиотеки с открытым исходны

05 июня 2011 - 22:42

Маргарита, я на свои вопросы придумал ответы. Думаю не надо ставить целью автотеста - поиск ошибок. Это усложняет автотест, можт усложнить его так, что он станет сложнее самого тестируемого приложения.

Автотесты бывают разные. Большинство проходят по регрессионным сценариям и проверяют, что ничего не сломалось, но, например, crawler'ы как раз созданы для того, чтобы находить неожиданные ощибки, а логику не проверяют никак. Здесь что важнее, на том и стоит концентрироваться. Регрессию обычно делают первой.