2010-06-11 3 views
2

У нас есть приложение, в котором загружаются некоторые файлы, и приложение перестает отвечать на некоторое время во время загрузки файла. во время автоматизации тестирования у нас есть сценарий, когда загрузка файла автоматизирована, но qtp должен ждать, пока приложение начнет отвечать на запросы снова. Как закодировать это? Любое свойство есть, например, «Подождите»?Подождите, пока приложение начнет отвечать - как закодировать это в qtp?

ответ

2

Любое имущество существует, например, «Подождите»?

Если да, то это приложение конкретным, так ответить, что один должен был бы принять технический взгляд на дизайн GUI приложения.

Вообще говоря, подумайте, как пользователь сможет понять, что приложение снова «отвечает». Обычно есть какой-то визуальный намек, похожий на кнопку, или какой-то элемент управления, который не был выделен серым цветом. Синхронизируйте это состояние с помощью точки синхронизации.

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

Часто точка синхронизации или визуальный намек наступает слишком рано, прежде чем приложение будет готово принять ввод снова. Затем, если ваше приложение очищает буфер клавиатуры до того, как ожидается следующий вход пользователя (пример широко распространенного плохого дизайна ...), вам будет сложно синхронизировать время. Нажатие клавиш и щелчки мыши будут потеряны. В этом случае вы должны: a) решить проблему, вставив задержку (вызов функции ожидания) перед следующим входом, b) установить, что приложение никогда не сбрасывает свою входную очередь, c) принуждает, чтобы визуальная подсказка выполнялась только после приложения ДЕЙСТВИТЕЛЬНО готов принять ввод. Конечно, б) и в) требуют работы со стороны разработчика и могут быть организационно сложны в реализации.

Если проблема возникает в разных или даже всех контекстах, сообщите об этом в тестовое управление и позвольте им заставить разработчиков внедрить пользовательский сигнал «Ready» только для вашего тестового робота. Затем вы можете запросить этот сигнал из QTP. Это может быть семафор, свойство строки Windows (вызов API Set/GetPropEx), существование файла (идея baaad ..) или какой-либо другой, не опасный, но несинхронизированный способ передачи состояния «Ready» из приложения в тестовый робот.

Все это звучит сумасшедшим, но я сделал все вышеизложенное, с обычно хорошими результатами.

2

Вставьте точку синхронизации на один объект приложения, например кнопку, включен. Точка синхронизации позволяет указать период ожидания.

2

Вы можете использовать общий Wait (seconds), если хотите быстрое и грязное исправление. Например, если вы знаете, что ваше приложение будет готово к использованию менее чем за минуту. Если это зависит от количества данных, вы можете попробовать использовать свойство «Exist» элемента управления вашего приложения, которое загружается после обработки всех данных. т.е.

while not loaded 
wait(1) 
loaded = Window.Control.Exist 
Wend 
+0

Примечание. В 10.00 существует наличие замечательных ошибок, возвращающихся всегда для конкретных элементов управления. Используйте GetProperty («micclass») = «» в таких случаях. – TheBlastOne

2

На мой взгляд, самым простым и надежным решением будет вызывать WinAPI-х IsHungAppWindow из user32.dll непосредственно. QTP позволяет легко объявлять внешние функции.

+0

Хе-хе ... так что он должен ждать - для функции IsHungAppWindow, возвращающей true для окна его приложения? Или ложь? Это просто означает, что Windows считает это «не отвечающим» приложением. Все приложения, которые не проводят опрос в очереди сообщений, считаются «не отвечающими». Это не означает, что приложение, которое не «не отвечает», готово принять и обработать ввод с точки зрения тестового робота ... Этот факт и таймауты, связанные с этим, делают IsHungAppWindow хорошей рекомендацией. – TheBlastOne

+0

Вы, кажется, слишком усложняете вещи. Тема starter описала ситуацию, когда приложение перестает отвечать (чтение - не обрабатывает сообщения) при выполнении некоторых операций. IsHungAppWindow точно определит эту ситуацию. Это решение довольно легко реализовать в инструментах автоматического тестирования, просто вызовите функцию dll. – Andrey

-1

Мы можем использовать While Loop ждать экрана страницы приложения, чтобы быть видимым, когда загружен скрипт должен перейти к следующему экрану

0

Предположим, что ваше приложение занимает максимум 2 минуты, чтобы начать. Используйте функцию ниже, чтобы узнать, является ли ваше приложение существует или нет ...

функция checkWindowExistance()

тусклым я

я = 0

при г = 0 до 120

если Window.Dialog.Exist

{

 exit for 

}

ожидания (1) «wait_for_1_second

Следующая

, если я = 120, то

checkWindowExistance = ложная

еще

checkWindowExistance = TRUE

конца функция

0

Wait WaitProperty синхронизация эти три основные свойства или методы, которые Держат страницу в синхронизированной

Wait будет использовать большинство программистов.

Но Хотя Полная страница должна быть snchronized лучше использовать «.Sync» не будет проверять до момента синхронизации, и она двигается к следующему шагу, если грузы успешно

Но постойте Уэйтс до определенного количества времени, хотя объект, найденный intime

Смежные вопросы