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

Контрольная точка редактирования просто проверяет, совпадает ли введенное нами свойство Text в WinEditor: «A», возврат каретки, перевод строки, «B».(Это именно то, что содержит редактор, вы можете проверить, посмотрев на GetROProperty ("Text"), он возвращает строку длины 4 с ASCII 65, 13, 10, 66, что именно то, что я ожидал.)

Если я создаю контрольную точку, используя активный экран последнего вызова Типа, и использую значение, содержащееся в нем, я получаю элемент управления «сложное значение» в диалоговом окне для редактирования значения свойства «Текст».Он поддерживает ввод разрывов строк простым нажатием Enter.Пока все хорошо.

Если я создам контрольную точку вручную и вручную введу ожидаемое значение для свойства Text, я получу вместо этого простой элемент управления для редактирования.Я не могу ввести строку с разрывами строки там.

Вопрос: Как я могу ввести ожидаемое строковое значение, используя элемент управления для редактирования комплексного значения, если я изначально не создавал контрольную точку со "сложным" значением, например, строку без разрывов строки?

Если я вообще не могу этого сделать, это будет сбой дизайна - подумайте об этом: предположим, что вы создаете его с помощью активного экрана, а затем редактируете ожидаемое значение как нечто тривиальное.Это приводит к тому, что (тривиальное) ожидаемое значение отныне будет редактируемым только с помощью простого элемента управления редактированием - и у меня не будет возможности отменить мое изменение и повторно отредактировать ожидаемое значение, чтобы оно содержало разрыв строки.

Одной из идей было бы создание регулярного выражения.Регулярное выражение для приведенного выше примера будет "A\cM\cJB".Это не работает, однако.Отдельный вопрос ( QTP: Как сопоставить (или параметризовать) разрывы строк в элементах управления многострочным редактированием? ) спрашивает, почему, поэтому давайте попробуем избежать этого аспекта регулярного выражения в этом вопросе здесь.Кроме того, мне интересно, как бы я мог параметризовать такие значения, содержащие разрывы строк, в столбец таблицы данных, если бы не регулярное выражение.Я не могу ввести разрывы строк в ячейке таблицы данных.Но этот аспект также находится в вопросе регулярного выражения, поэтому давайте также избегать этого аспекта.

1 Ответ

1 голос
/ 02 мая 2011

Создатель QTP;) признал, что это "по замыслу" :)

Обходной путь может заключаться в использовании режима обновления для перехвата значения, включая значение, содержащее последовательность CR LF. Затем можно вернуться к диалоговому окну редактирования «комплексное значение».

Но графический интерфейс QTP определенно не дает возможности выйти из «тупика» редактирования.

...