Рассмотрим этот сценарий:
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
Контрольная точка редактирования просто проверяет, совпадает ли введенное нами свойство Text в WinEditor: «A», возврат каретки, перевод строки, «B».(Это именно то, что содержит редактор, вы можете проверить, посмотрев на GetROProperty ("Text")
, он возвращает строку длины 4 с ASCII 65, 13, 10, 66, что именно то, что я ожидал.)
Если я создаю контрольную точку, используя активный экран последнего вызова Типа, и использую значение, содержащееся в нем, я получаю элемент управления «сложное значение» в диалоговом окне для редактирования значения свойства «Текст».Он поддерживает ввод разрывов строк простым нажатием Enter.Пока все хорошо.
Если я создам контрольную точку вручную и вручную введу ожидаемое значение для свойства Text, я получу вместо этого простой элемент управления для редактирования.Я не могу ввести строку с разрывами строки там.
Вопрос: Как я могу ввести ожидаемое строковое значение, используя элемент управления для редактирования комплексного значения, если я изначально не создавал контрольную точку со "сложным" значением, например, строку без разрывов строки?
Если я вообще не могу этого сделать, это будет сбой дизайна - подумайте об этом: предположим, что вы создаете его с помощью активного экрана, а затем редактируете ожидаемое значение как нечто тривиальное.Это приводит к тому, что (тривиальное) ожидаемое значение отныне будет редактируемым только с помощью простого элемента управления редактированием - и у меня не будет возможности отменить мое изменение и повторно отредактировать ожидаемое значение, чтобы оно содержало разрыв строки.
Одной из идей было бы создание регулярного выражения.Регулярное выражение для приведенного выше примера будет "A\cM\cJB"
.Это не работает, однако.Отдельный вопрос ( QTP: Как сопоставить (или параметризовать) разрывы строк в элементах управления многострочным редактированием? ) спрашивает, почему, поэтому давайте попробуем избежать этого аспекта регулярного выражения в этом вопросе здесь.Кроме того, мне интересно, как бы я мог параметризовать такие значения, содержащие разрывы строк, в столбец таблицы данных, если бы не регулярное выражение.Я не могу ввести разрывы строк в ячейке таблицы данных.Но этот аспект также находится в вопросе регулярного выражения, поэтому давайте также избегать этого аспекта.