У нас в результате действия может закрыться\не закрыться окно. Сaption у него может быть разный, но фиксировано начало(New Order:). Надо понять, закрылось оно все же или нет. По идее, кусок кода, приведенный ниже, должен работать, но, к сожалению, на практике дело обстоит иначе. Есть у кого-нибудь какие-нибудь мысли, как заставить заработать распознавание?
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)
Select Case Value
Case "{New Order:*}"
Window SetContext, "Caption={New Order*}", ""
PushButton Click, "ObjectIndex=7"
Case Else
End Select
Window SetContext, "Caption={трам-пам-пам}", ""
Window CloseWin, "", ""
Wildcards in Select Case Statement
Автор bolshik, 04 ноя 2004 11:35
Сообщений в теме: 4
#1
Отправлено 04 ноября 2004 - 11:35
#2
Отправлено 04 ноября 2004 - 12:20
Что значит "на практике дело обстоит иначе"? По шагам пробовали выполнять скрипт? смотрели какие значение принимает Value и как работает Select Case и что потом происходит?
PushButton Click, "ObjectIndex=7" - это у Вас нажатие на кнопку "закрыть приложение"?
Почему выбрана структура Select Case, а не if к примеру?
PushButton Click, "ObjectIndex=7" - это у Вас нажатие на кнопку "закрыть приложение"?
Почему выбрана структура Select Case, а не if к примеру?
#3
Отправлено 04 ноября 2004 - 15:41
Case ожидает константного выражения, он не понимает, что означает *. Для Case * это просто один символ - *, и ничего более. Поэтому когда вы сравниваете {New Order:*} с реальным значением типа {New Order:12345} вы, естественно, получаете fail.
Не совсем понятно зачем вам Case, если у вас одинаковые действия (закрыть окно) для всех случаев. Попробуйте так (синтаксис не знаю, это просто концептуальное решение):
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)
If Value contains "New Order" Then
Window SetContext, "Caption={New Order*}", ""
PushButton Click, "ObjectIndex=7"
End If
Window SetContext, "Caption={трам-пам-пам}", ""
Window CloseWin, "", ""
Не совсем понятно зачем вам Case, если у вас одинаковые действия (закрыть окно) для всех случаев. Попробуйте так (синтаксис не знаю, это просто концептуальное решение):
Result = SQAGetProperty ("Type=Window;CurrentFocus", "Caption", Value)
If Value contains "New Order" Then
Window SetContext, "Caption={New Order*}", ""
PushButton Click, "ObjectIndex=7"
End If
Window SetContext, "Caption={трам-пам-пам}", ""
Window CloseWin, "", ""
#4
Отправлено 05 ноября 2004 - 08:03
спасибо за советы.
На самом деле, если Case принимает только фиксированные значения, то понятно, почему не работало. Вопрос -- что такое "contains"? Оператора такого, у меня во всяком случае, нет.
На самом деле, если Case принимает только фиксированные значения, то понятно, почему не работало. Вопрос -- что такое "contains"? Оператора такого, у меня во всяком случае, нет.
#5
Отправлено 05 ноября 2004 - 19:44
Я же написал, что синтаксиса не знаю, поэтому код был на уровне концепции.Вопрос -- что такое "contains"? Оператора такого, у меня во всяком случае, нет.
contain-
...
3) содержать в себе, включать, иметь в своем составе; вмещать
Syn: hold , comprise , include, accommodate...
В Robot'e вроде InStr() функция есть или что-то подобное, просто не помню уже. Суть простая - проверить что в извлеченном заголовке содержится строка "New Order", чтобы убедиться, что это именно то окно, которое вам нужно.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных