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

Фотография

How Can I Check Window Existence In Rational Robot


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

#1 терапевт

терапевт

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

  • Members
  • Pip
  • 27 сообщений

Отправлено 17 октября 2003 - 14:41

Я столкнулся со ледующей проблемой:

Мне необходимо, чтобы мой скрипт отслеживал наличие определенного окна. Оно может появиться, а может не появиться, это зависит от некоторых условий. Я использую для этого:

Result = WindowVP (Exists, "Caption=WindowCaption;ChildWindow", "VP=WinExist;Wait=1,3")

If Result = 1 Then
Call Func1
Else
Call Func2
End If

Проблема в том, что я всегда получаю один и тот же результат, то есть Result имеет одно значение, если окно есть и, если его нет.

Использование "ExpectedResult=Pass(Fail)" картины не улучшает

Используется ли здесь baseline и как его (baseline) постоянно держать в одном значении, чтобы результат был правильным?

1) Подскажите каким образом всё-таки возможно осуществить проверку окна с помощью WindowVP (Exists, "Caption=WindowCaption", "VP=VPName)?

2) Есть ли другой способ проверки наличия окна. К примеру, как в VisualTest с помощью HWND или как в WinRunner с помощью win_exists (window, [time])?

PS: обработка UnExpected window не продходит
  • 0

#2 el-step

el-step

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

  • Members
  • PipPip
  • 76 сообщений
  • Город:Москва

Отправлено 17 октября 2003 - 21:54

А какой Result получается, 0 или 1?
Если 1 -- это загадочный случай, тут нужно думать дальше :)
Если 0 -- очевидно, окно просто не обнаруживается.

Из приведенного фрагмента я могу предположить 3 причины:

а) Искомое окно в действительности не ChildWindow.
Вы уверены, что Вам необходимо использовать ChildWindow как дополнительный метод? Если нет -- просто попробуйте без него, вполне возможно, Caption окажется вполне достаточно для распознавания:
Result = WindowVP (Exists, "Caption=WindowCaption", "VP=WinExist;Wait=1,3")

б) Искомое окно ChildWindow, но в предыдущей части скрипта неправильно устанавливается (или изменяется) окно контекста.
Каким именно образом выбирается контекстное окно? Возможно даже, имеет смысл непосредственно перед VP установить его явно:
Window SetContext, "Caption=ParentWindowCaption", ""

в) Значение WindowCaption указано с ошибкой.
Это, конечно, маловероятно, но все же -- не вкралась ли опечатка в WindowCaption? Всякое бывает..

Используется ли здесь baseline

Насколько мне известно, для 'Exists' baseline не используется.

каким образом всё-таки возможно осуществить проверку окна с помощью WindowVP

Ваш вариант выглядит вполне нормальным, думаю, проблема в ChildWindow -- пункты а) или б).

Есть ли другой способ проверки наличия окна

Когда меня не устраивает то, что с VP скрипт заканчивается с результатом fail (т. е. если в действительности ни наличие, ни отсутствие окна ошибкой не является), использую SQAGetProperty:
Result=SQAGetProperty("Caption=WindowCaption","Caption",Value)
(честно говоря -- первое, что когда-то попалось под руку; наверняка есть и более изящные решения, не было времени изучить вопрос).
Получается примерно то же самое, только без влияния на результат выполнения всего скрипта.
Result=0 если успех и <>0 (код ошибки) в противном случае.

P.S. Надеюсь, если я где-то ошибаюсь, знающие люди меня поправят.
  • 0

#3 терапевт

терапевт

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

  • Members
  • Pip
  • 27 сообщений

Отправлено 21 октября 2003 - 07:06

Спасибо за подсказку.

Это работает. Однако в моем варианте я использую

Window SetContext, "CurrentWindow", ""
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)

потому что неизвестно какое окно я получаю. Далее результат идет на case, где собственно тайное становится явным
  • 0

#4 MarinaK

MarinaK

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

  • Members
  • Pip
  • 59 сообщений


Отправлено 31 октября 2003 - 13:52

Как здорово, что вы подняли эту тему!
К решению Result=SQAGetProperty("Caption=WindowCaption","Caption",Value) для обнаружения окошка, которое может появиться, а может и нет, и ни то, ни дургое не является ошибкой, я тоже пришла, работает нормально.
А может подскажете, как получить ПОЛНЫЙ caption окна, если в
Tools -> GUI Playback options -> Caption Matching -> Partial window caption matching defaults выбрано On each window search и в качестве символа Caption terminating character выбран '(', чтобы обрезать номер версии приложения, указываемого в скобках.
  • 0

#5 el-step

el-step

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

  • Members
  • PipPip
  • 76 сообщений
  • Город:Москва

Отправлено 31 октября 2003 - 14:44

как получить ПОЛНЫЙ caption окна

А использовать в SQAGetProperty шаблон имени (wildcard) не получается? По типу

Result=SQAGetProperty("Caption={Prefix*}","Caption",Value)

где Prefix -- часть Вашего Caption до открывающей скобки.
  • 0

#6 MarinaK

MarinaK

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

  • Members
  • Pip
  • 59 сообщений


Отправлено 06 ноября 2003 - 10:16

Почему-то Value = "" в этом случае.
Если у вас не так... странно! Хочу разобраться!
Попробуйте у себя, плиз, если есть возможность.
  • 0

#7 el-step

el-step

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

  • Members
  • PipPip
  • 76 сообщений
  • Город:Москва

Отправлено 06 ноября 2003 - 10:26

Нет, у меня не так, пробовалось неоднократно (ver. 2002.05.00)
А Result при этом какой получается?
  • 0

#8 MarinaK

MarinaK

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

  • Members
  • Pip
  • 59 сообщений


Отправлено 06 ноября 2003 - 12:36

Есть! Заработало!!!!!
Помогло предложенное см. выше решение:

Window SetContext, "CurrentWindow", ""
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)

Вот теперь caption берется полностью!!!!!
Спасибо!
  • 0

#9 el-step

el-step

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

  • Members
  • PipPip
  • 76 сообщений
  • Город:Москва

Отправлено 08 ноября 2003 - 13:36

Ну и чудесно... Это даже к лучшему :D
Поиск по Caption тоже в принципе работает, но он иногда подводит -- безотносительно к SQAGetProperty и к wildcard, просто сам по себе: перестает находить окна, которые в предыдущий прогон обнаруживал совершенно нормально. Во всяком случае, у меня такое бывает. Пока не было времени разобраться, почему это происходит.
  • 0


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

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