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

Программирование на Python для тестировщиков
онлайн, начало 21 сентября
Школа тест-менеджеров v. 2.0
онлайн, начало 26 сентября
Логи как инструмент тестировщика
онлайн, начало 24 сентября
Школа для начинающих тестировщиков
онлайн, начало 24 сентября
Фотография

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


Программирование на С# для тестировщиков
онлайн, начало 28 сентября
Автоматизатор мобильных приложений
онлайн, начало 5 сентября
Selenium WebDriver: полное руководство
онлайн, начало 14 сентября
Программирование на Python для тестировщиков
онлайн, начало 21 сентября



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

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

Яндекс.Метрика
Реклама на портале