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

Фотография

Ожидание появления окна или определенного свойства


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Alex-tester

Alex-tester

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

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Альферович Лёха


Отправлено 22 ноября 2006 - 16:33

Многие программы, выполняют длительные по времени операции, и не всегда они выполняют их за отведенный промежуток времени, Например, сохранение файла занимает 2 минуты, можно конечно поставить команду Delayfor, но вдруг вам в руки попался слабый ПК, в котором эта операция выполняется за 3 минуты и тогда скрипт не сможет выполниться. В таких случаях лучше в скрипте самим отслеживать изменение/появление объектов.
Существуют много вариантов решения этой проблемы, несколько из них решаются посредствам следующих функций:
1. SQAWaitForObject – ожидает появления объекта
a. Пример ожидаем появления окна
b. Пример ожидаем появление кнопки
2. SQAFindObject – ищет объект
3. SQAGetProperty – получает свойства объекта
Рассмотрим пример применения этих функций на примере работы с блокнотом.

Вариант 1 – SQAWaitForObject
‘ данная функция ожидает появление объекта в течении указанного времени.
Sub Main
Dim Result As Integer
''''' Ждем появление окна с заголовком "Блокнот"
Result = SQAWaitForObject("Type=Window;Caption=Блокнот", 200000)
'200000 - это 200 секунд, если объект, не появился за это время. скрипт продолжает выполняться
IF Result =0 then
SQALogMessage sqaPass, "Появилось", "Окно с заголовком Блакнот появилось"
Else
SQALogMessage sqaFail, "Не появилось", "Окно с заголовком Блакнот Не появилось"
End if

'''' Ждем появление кнопки Нет в активном окне
Window SetContext, "CurrentWindow", "" ' Делаем активным окно с заголовком Блокнот
Result = SQAWaitForObject("Type=PushButton;Text=Нет", 200000)
'200000 - это 200 секунд, если кнопка Нет, не появился за это время. скрипт продолжает выполняться

IF Result =0 then
SQALogMessage sqaPass, "Появилась", "Появилась кнопка 'Нет' в окне Блокнот"
PushButton Click, "Text=Нет"
Else
SQALogMessage sqaPass, "Не появилась", "Не появилась кнопка 'Нет' в окне Блокнот"
End if
End Sub

Вариант 2 – SQAFindObject
‘ данная функция осуществляет поиск указанного объекта
‘ в данном примере рассматривается пример, когда ожидаем появления кнопки в активном окне.
Sub Main
Dim Result as Integer
Do
Window SetContext, "CurrentWindow", ""
Result = SQAFindObject("Type=PushButton;Text=Нет")
If Result=0 then ' Если 0, то найден объект и можно выходить из цикла
PushButton Click, "Text=Нет" ' нажимаем на кнопку Нет
Exit do
End if
Loop
End Sub

Вариант 3 - SQAGetProperty
'Данной функцией необходимо пользоваться, когда выполняется какая-то операция и информация об этой операции выводится в существующем объекте/поле (информационное поле, которое всегда присутствует на форме) или какая-то кнопка становится доступной или наоборот становится неактивной.
'Рассмотрим на примере программы Калькулятор, скрипт прекратит работать когда в окне калькулятора появится значение 6.

Sub Main
Dim CheckState as String
Dim Result as Integer

StartApplication "calc.exe"
CheckState = "" ' что бы хоть раз зайти в цикл

While trim(CheckState) <> "6," ‘ как только в окне калькулятора появится значение 6 цикл будет прерван.
Window SetContext, "Caption=Калькулятор", ""
Result = SQAGetProperty("Type=EditBox;ObjectIndex=1", "Text", CheckState) ‘ получаем информацию из калькулятора о том что там отображается
wend

Window SetContext, "Caption=Калькулятор", ""
Window CloseWin, "", ""
End Sub
  • 0


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

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