QTP: Как мне сопоставить (или параметризировать) разрывы строк в элементах управления многострочным редактированием? - PullRequest
1 голос
/ 05 апреля 2011

Рассмотрим этот сценарий:

SystemUtil.Run "notepad.exe"
With Window("Notepad")
    .WinEditor("Edit").Type "A"
    .WinEditor("Edit").Type  micReturn
    .WinEditor("Edit").Type "B"
  .WinEditor("Edit").Check CheckPoint("Edit")
End With

Контрольная точка «Edit» просто проверяет, содержит ли «Edit» WinEdit «A», CR, LF, «B».(Это именно то, что содержит редактор, вы можете проверить, посмотрев на GetROProperty ("Text"), он возвращает строку длины 4 с ASCII 65, 13, 10, 66, что именно то, что я ожидал.) Я могу легко создатьтакую ​​контрольную точку после записи сценария и вставки контрольной точки с помощью активной экранной click-o-magic.

Но теперь предположим, что я хочу параметризовать ожидаемую строку.Поскольку я не могу ввести разрывы строк в ячейке таблицы данных, я бы преобразовал ожидаемую строку в регулярное выражение, например "A\cM\cJB" для приведенного выше примера.Независимо от того, положил ли я это регулярное выражение в таблицу данных или нет, он не совпадает.Почему?

Или есть какой-либо другой способ параметризации ожидаемой строки, содержащей разрыв строки?

Также см. Вопрос QTP: Как получить «комплексное значение»изменить элемент управления в диалоговом окне редактирования свойства контрольной точки? .

1 Ответ

2 голосов
/ 07 апреля 2011

Факты:

  1. Символы новой строки в ожидаемом значении контрольной точки не поддерживаются .Хотя это кажется очевидным, на самом деле все токены регулярных выражений для новой строки, включая \cM и \cJ, не обрабатываются ожидаемым образом.
  2. Не имеет значения, находится ли значение в таблице данных (будучипараметр данных для контрольной точки) или вставляется непосредственно в контрольную точку.
  3. Служба поддержки говорит, что это связано с тем, что сторонний компонент Formula1, используемый для реализации редактора таблиц данных в QTP, не может использовать символы новой строки.
  4. (3) не может быть истинным, потому что тогда (2) не будет истинным.
  5. Поддержка предлагает поместить формулу в таблицу данных, которая доставляет искомую строку, например, '="A"+Chr(13)+Chr(10)+Chr("B")'.

    Я думаю, это очень приятно.

Итак, еще раз, я ответил на свой вопрос, но не для того, чтобы заработать очки уважения (буду ли я зарабатывать?), Но чтобы поделиться «решением» или обходным путем, со всеми,

Используемая версия QTP была 10.00.

...