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

Фотография

Wildcards in Select Case Statement


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

#1 bolshik

bolshik

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

  • Members
  • Pip
  • 44 сообщений
  • Город:Санкт-Петербург

Отправлено 04 ноября 2004 - 11:35

У нас в результате действия может закрыться\не закрыться окно. С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, "", ""
  • 0

#2 Petr

Petr

    Опытный участник

  • Members
  • PipPipPipPip
  • 317 сообщений
  • ФИО:Можаев Петр
  • Город:Москва

Отправлено 04 ноября 2004 - 12:20

Что значит "на практике дело обстоит иначе"? По шагам пробовали выполнять скрипт? смотрели какие значение принимает Value и как работает Select Case и что потом происходит?
PushButton Click, "ObjectIndex=7" - это у Вас нажатие на кнопку "закрыть приложение"?
Почему выбрана структура Select Case, а не if к примеру?
  • 0

#3 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 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, "", ""
  • 0
Дмитрий Шевченко

HP Software

#4 bolshik

bolshik

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

  • Members
  • Pip
  • 44 сообщений
  • Город:Санкт-Петербург

Отправлено 05 ноября 2004 - 08:03

спасибо за советы.
На самом деле, если Case принимает только фиксированные значения, то понятно, почему не работало. Вопрос -- что такое "contains"? Оператора такого, у меня во всяком случае, нет.
  • 0

#5 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 05 ноября 2004 - 19:44

Вопрос -- что такое "contains"? Оператора такого, у меня во всяком случае, нет.

Я же написал, что синтаксиса не знаю, поэтому код был на уровне концепции.

contain-
...
3) содержать в себе, включать, иметь в своем составе; вмещать
Syn: hold , comprise , include, accommodate...


В Robot'e вроде InStr() функция есть или что-то подобное, просто не помню уже. Суть простая - проверить что в извлеченном заголовке содержится строка "New Order", чтобы убедиться, что это именно то окно, которое вам нужно.
  • 0
Дмитрий Шевченко

HP Software


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

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