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

Фотография

Robot не видит окно при повторном проходе цикла


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

#1 aiga

aiga

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Aiga

Отправлено 14 мая 2012 - 09:48

Здраствуйте! У меня следующая проблема: у меня есть определенные действия, которые мне нужно повторить несколько раз. Делаю в обычном цикле. При каждом проходе возникает окно-сообщение. Его нужно закрыть или "крестиком", или нажав единственную кнопку "ОК". Но при втором проходе робот не видит этого окна: Script Command Failure. Unable to find the window.
Также в логе есть: Playback Warning: String is empty Empty String
Кроме этого возникают предепреждения:
**** Script Command Failure on line 26 of '300' - Empty String
**** Script Command Failure on line 26 of '300' - Empty String
**** Script Command Failure on line 28 of '300' - Empty String
**** Script Command Failure on line 26 of '300' - Empty String
**** Script Command Failure on line 28 of '300' - Empty String
**** Script Command Failure on line 32 of '300' -

Проблемный кусок скрипта:
For i=1 to 3
........
Window SetContext, "Caption=Помилка", "" (строка 26)
PushButton Click, "Text=OK" (строка 28)
DelayFor (1000) задержка добавлена поскольку приложение работает достаточно медленно
Window SetContext, "Caption=Інформація", "" (строка 32)
PushButton Click, "Text=OK"
.....
Next i

Жду ваших советов.
  • 0

#2 berzinc

berzinc

    Активный участник

  • Members
  • PipPip
  • 110 сообщений
  • ФИО:Berzins Lauris
  • Город:Riga, Latvia

Отправлено 14 мая 2012 - 10:32

Вместо
Window SetContext, "Caption=Помилка", ""
Window SetContext, "Caption=Інформація", ""

if fSetContext("Помилка") then
...
else
...log error

где fSetContext:
Function fSetContext(psCaption as string) as integer
if WindowVP (Exists, "Caption="+psCaption, "VP=fSetContext;Wait=2,30") = 1 then
Window SetContext, "Caption="+psCaption, ""
fSetContext=1
else
fSetContext=0
end if
end function
  • 1

#3 aiga

aiga

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Aiga

Отправлено 14 мая 2012 - 13:16

Вместо
Window SetContext, "Caption=Помилка", ""
Window SetContext, "Caption=Інформація", ""

if fSetContext("Помилка") then
...
else
...log error

где fSetContext:
Function fSetContext(psCaption as string) as integer
if WindowVP (Exists, "Caption="+psCaption, "VP=fSetContext;Wait=2,30") = 1 then
Window SetContext, "Caption="+psCaption, ""
fSetContext=1
else
fSetContext=0
end if
end function


Спасибо за совет, но мне не очень помогло. Эта процедура очень сильно замедляет работу, а мне важно после возникновения окна "Помилка" остановить таймер. А если я написала
if fSetContext("Помилка") then
.....
то у меня насчитываются лишние секунд 10.
Поэтому попробовала сделать так:
Window SetContext, "Caption=Помилка", ""
ElapseTime = Timer - ElapseTime
PushButton Click, "Text=OK"
DelayFor (1000)
if WindowVP (Exists, "Caption=Інформація", "VP=WindowExistence;Wait=2.3") = 1 then
Window SetContext, "Caption=Інформація", ""
PushButton Click, "Text=OK"
end if

но при этом у меня опять при первом проходе все хорошо, а на втором уже очень сильно тормозит и в конце концов пишет, что не может найти окно. Может будут еще какие-то идеи? или я что-то делаю не так?
И еще:
в строчке
if WindowVP (Exists, "Caption="+psCaption, "VP=fSetContext;Wait=2,30") = 1 then
точно должно быть "VP=fSetContext"? Я просто не совсем понимаю, что это означает. мне казалось правильнее писать "VP=WindowExistence".
  • 0

#4 berzinc

berzinc

    Активный участник

  • Members
  • PipPip
  • 110 сообщений
  • ФИО:Berzins Lauris
  • Город:Riga, Latvia

Отправлено 14 мая 2012 - 13:50

И еще:
в строчке
if WindowVP (Exists, "Caption="+psCaption, "VP=fSetContext;Wait=2,30") = 1 then
точно должно быть "VP=fSetContext"? Я просто не совсем понимаю, что это означает. мне казалось правильнее писать "VP=WindowExistence".


"VP=..." - script verification point name = anything

WindowVP (Exists, "Caption="+psCaption, "VP=fSetContext;Wait=2,30")
Log:
Verification Point (fSetContext - Window Existence) Pass

WindowVP (Exists, "Caption="+psCaption, "VP=Window Existence;Wait=2,30")
Log:
Verification Point (Window Existence - Window Existence) Pass
  • 1

#5 aiga

aiga

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

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Aiga

Отправлено 14 мая 2012 - 14:41

Спасибо, все получилось! Написала как Вы и советовали, т.е. следующим образом (может быть сначала не вышло из-за Wait=2,30, я потом увеличила до 80):
Function fSetContext(psCaption as string) as integer
if WindowVP (Exists, "Caption="+psCaption, "VP=fSetContext;Wait=2,80") = 1 then
Window SetContext, "Caption="+psCaption, ""
fSetContext=1
else
fSetContext=0
end if
end function
.......
For i=1 to 3
.......
if fSetContext("Помилка") then
ElapseTime = Timer - ElapseTime
PushButton Click, "Text=OK"
end if
if fSetContext("Інформація")=1 then
PushButton Click, "Text=OK"
end if
........
Next i
  • 0


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

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