How Can I Check Window Existence In Rational Robot
#1
Отправлено 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 не продходит
#2
Отправлено 17 октября 2003 - 21:54
Если 1 -- это загадочный случай, тут нужно думать дальше :)
Если 0 -- очевидно, окно просто не обнаруживается.
Из приведенного фрагмента я могу предположить 3 причины:
а) Искомое окно в действительности не ChildWindow.
Вы уверены, что Вам необходимо использовать ChildWindow как дополнительный метод? Если нет -- просто попробуйте без него, вполне возможно, Caption окажется вполне достаточно для распознавания:
Result = WindowVP (Exists, "Caption=WindowCaption", "VP=WinExist;Wait=1,3")
б) Искомое окно ChildWindow, но в предыдущей части скрипта неправильно устанавливается (или изменяется) окно контекста.
Каким именно образом выбирается контекстное окно? Возможно даже, имеет смысл непосредственно перед VP установить его явно:
Window SetContext, "Caption=ParentWindowCaption", ""
в) Значение WindowCaption указано с ошибкой.
Это, конечно, маловероятно, но все же -- не вкралась ли опечатка в WindowCaption? Всякое бывает..
Насколько мне известно, для 'Exists' baseline не используется.Используется ли здесь baseline
Ваш вариант выглядит вполне нормальным, думаю, проблема в ChildWindow -- пункты а) или б).каким образом всё-таки возможно осуществить проверку окна с помощью WindowVP
Когда меня не устраивает то, что с VP скрипт заканчивается с результатом fail (т. е. если в действительности ни наличие, ни отсутствие окна ошибкой не является), использую SQAGetProperty:Есть ли другой способ проверки наличия окна
Result=SQAGetProperty("Caption=WindowCaption","Caption",Value)
(честно говоря -- первое, что когда-то попалось под руку; наверняка есть и более изящные решения, не было времени изучить вопрос).
Получается примерно то же самое, только без влияния на результат выполнения всего скрипта.
Result=0 если успех и <>0 (код ошибки) в противном случае.
P.S. Надеюсь, если я где-то ошибаюсь, знающие люди меня поправят.
#3
Отправлено 21 октября 2003 - 07:06
Это работает. Однако в моем варианте я использую
Window SetContext, "CurrentWindow", ""
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)
потому что неизвестно какое окно я получаю. Далее результат идет на case, где собственно тайное становится явным
#4
Отправлено 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 выбран '(', чтобы обрезать номер версии приложения, указываемого в скобках.
#5
Отправлено 31 октября 2003 - 14:44
А использовать в SQAGetProperty шаблон имени (wildcard) не получается? По типукак получить ПОЛНЫЙ caption окна
Result=SQAGetProperty("Caption={Prefix*}","Caption",Value)
где Prefix -- часть Вашего Caption до открывающей скобки.
#6
Отправлено 06 ноября 2003 - 10:16
Если у вас не так... странно! Хочу разобраться!
Попробуйте у себя, плиз, если есть возможность.
#7
Отправлено 06 ноября 2003 - 10:26
А Result при этом какой получается?
#8
Отправлено 06 ноября 2003 - 12:36
Помогло предложенное см. выше решение:
Window SetContext, "CurrentWindow", ""
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)
Вот теперь caption берется полностью!!!!!
Спасибо!
#9
Отправлено 08 ноября 2003 - 13:36
Поиск по Caption тоже в принципе работает, но он иногда подводит -- безотносительно к SQAGetProperty и к wildcard, просто сам по себе: перестает находить окна, которые в предыдущий прогон обнаруживал совершенно нормально. Во всяком случае, у меня такое бывает. Пока не было времени разобраться, почему это происходит.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных