У нас есть приложение, в котором загружаются некоторые файлы, и приложение перестает отвечать на некоторое время во время загрузки файла. во время автоматизации тестирования у нас есть сценарий, когда загрузка файла автоматизирована, но qtp должен ждать, пока приложение начнет отвечать на запросы снова. Как закодировать это? Любое свойство есть, например, «Подождите»?Подождите, пока приложение начнет отвечать - как закодировать это в qtp?
ответ
Любое имущество существует, например, «Подождите»?
Если да, то это приложение конкретным, так ответить, что один должен был бы принять технический взгляд на дизайн GUI приложения.
Вообще говоря, подумайте, как пользователь сможет понять, что приложение снова «отвечает». Обычно есть какой-то визуальный намек, похожий на кнопку, или какой-то элемент управления, который не был выделен серым цветом. Синхронизируйте это состояние с помощью точки синхронизации.
Если все не удается (например, если вы не можете идентифицировать элемент управления, который появляется, исчезает или меняет его свойства, когда обработка приложения завершена), придерживайтесь контрольной точки битмапа, которая будет искать ту же визуальную подсказку, которую человек интерпретировал бы.
Часто точка синхронизации или визуальный намек наступает слишком рано, прежде чем приложение будет готово принять ввод снова. Затем, если ваше приложение очищает буфер клавиатуры до того, как ожидается следующий вход пользователя (пример широко распространенного плохого дизайна ...), вам будет сложно синхронизировать время. Нажатие клавиш и щелчки мыши будут потеряны. В этом случае вы должны: a) решить проблему, вставив задержку (вызов функции ожидания) перед следующим входом, b) установить, что приложение никогда не сбрасывает свою входную очередь, c) принуждает, чтобы визуальная подсказка выполнялась только после приложения ДЕЙСТВИТЕЛЬНО готов принять ввод. Конечно, б) и в) требуют работы со стороны разработчика и могут быть организационно сложны в реализации.
Если проблема возникает в разных или даже всех контекстах, сообщите об этом в тестовое управление и позвольте им заставить разработчиков внедрить пользовательский сигнал «Ready» только для вашего тестового робота. Затем вы можете запросить этот сигнал из QTP. Это может быть семафор, свойство строки Windows (вызов API Set/GetPropEx), существование файла (идея baaad ..) или какой-либо другой, не опасный, но несинхронизированный способ передачи состояния «Ready» из приложения в тестовый робот.
Все это звучит сумасшедшим, но я сделал все вышеизложенное, с обычно хорошими результатами.
Вставьте точку синхронизации на один объект приложения, например кнопку, включен. Точка синхронизации позволяет указать период ожидания.
Вы можете использовать общий Wait (seconds), если хотите быстрое и грязное исправление. Например, если вы знаете, что ваше приложение будет готово к использованию менее чем за минуту. Если это зависит от количества данных, вы можете попробовать использовать свойство «Exist» элемента управления вашего приложения, которое загружается после обработки всех данных. т.е.
while not loaded
wait(1)
loaded = Window.Control.Exist
Wend
На мой взгляд, самым простым и надежным решением будет вызывать WinAPI-х IsHungAppWindow из user32.dll непосредственно. QTP позволяет легко объявлять внешние функции.
Хе-хе ... так что он должен ждать - для функции IsHungAppWindow, возвращающей true для окна его приложения? Или ложь? Это просто означает, что Windows считает это «не отвечающим» приложением. Все приложения, которые не проводят опрос в очереди сообщений, считаются «не отвечающими». Это не означает, что приложение, которое не «не отвечает», готово принять и обработать ввод с точки зрения тестового робота ... Этот факт и таймауты, связанные с этим, делают IsHungAppWindow хорошей рекомендацией. – TheBlastOne
Вы, кажется, слишком усложняете вещи. Тема starter описала ситуацию, когда приложение перестает отвечать (чтение - не обрабатывает сообщения) при выполнении некоторых операций. IsHungAppWindow точно определит эту ситуацию. Это решение довольно легко реализовать в инструментах автоматического тестирования, просто вызовите функцию dll. – Andrey
Мы можем использовать While Loop ждать экрана страницы приложения, чтобы быть видимым, когда загружен скрипт должен перейти к следующему экрану
Предположим, что ваше приложение занимает максимум 2 минуты, чтобы начать. Используйте функцию ниже, чтобы узнать, является ли ваше приложение существует или нет ...
функция checkWindowExistance()
тусклым я
я = 0
при г = 0 до 120
если Window.Dialog.Exist
{
exit for
}
ожидания (1) «wait_for_1_second
Следующая
, если я = 120, то
checkWindowExistance = ложная
еще
checkWindowExistance = TRUE
конца функция
Wait WaitProperty синхронизация эти три основные свойства или методы, которые Держат страницу в синхронизированной
Wait будет использовать большинство программистов.
Но Хотя Полная страница должна быть snchronized лучше использовать «.Sync» не будет проверять до момента синхронизации, и она двигается к следующему шагу, если грузы успешно
Но постойте Уэйтс до определенного количества времени, хотя объект, найденный intime
- 1. Gulp: Подождите, пока экспресс-сервер начнет работу перед запуском тестов.
- 2. Подождите, пока сигнал начнет работу (рабочий процесс amazon)
- 3. Подождите, пока запущенное приложение остановится
- 4. Подождите, пока обратный вызов
- 5. XCTestCase: Подождите, пока приложение не станет
- 6. Подождите, пока не произойдет событие
- 7. Генерация подождите, пока приложение не откроется
- 8. Подождите, пока приложение не запустится Java swing
- 9. Подождите, пока [NSAlert beginSheetModalForWindow: ...];
- 10. Подождите, пока пользовательское разрешение
- 11. Подождите, пока NSURLSessionDataTask вернется
- 12. Подождите, пока AlertDialog покажет
- 13. Подождите, пока запрос выполняется
- 14. Подождите, пока ExecWB закончит
- 15. Подождите, пока переменная изменится
- 16. Подождите, пока процесс не закончится
- 17. Подождите, пока не закончите?
- 18. Подождите, пока задача вернется
- 19. Подождите, пока выйдет замок.
- 20. Подождите, пока addClass выполнит
- 21. Подождите, пока «Записать полностью»
- 22. Подождите, пока fs.readFileSync делается
- 23. Подождите, пока страница вернет значение
- 24. Подождите, пока сигнал начнет генерировать данные из другого процесса в python
- 25. WPF Подождите, пока пользовательский ввод
- 26. Observable.Interval Подождите, пока действие не будет выполнено.
- 27. Подождите, пока мышь щелкните внутри, пока цикл
- 28. Подождите, пока AVSpeechSynthesiser закончит произносить
- 29. Как это правильно закодировать?
- 30. Как создать счетчик «Подождите», пока данные импортируются
Примечание. В 10.00 существует наличие замечательных ошибок, возвращающихся всегда для конкретных элементов управления. Используйте GetProperty («micclass») = «» в таких случаях. –
TheBlastOne