Присвоение объекту класса имени параметра - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть сценарий TC, который обрабатывает параметры отчетов для различных экранов.Имя класса окна меняется на каждом экране, и, поскольку я хочу, чтобы этот скрипт работал в переведенной среде, заголовок окна также будет меняться.Первая часть работает правильно, но как мне объяснить изменение имени окна?Если я удаляю заголовок, TC бомбит с неоднозначной ошибкой распознавания окна.

Текущий фрагмент кода (с заголовком на одном экране):

w := p.WaitWindow('*', 'Options', 1, 10000);   
if w.Name='frmBasicOpt' then
begin
....

Могу ли я задать имя класса в качестве параметра, который вводится, чтобы я мог пропустить заголовок?Если так, как я могу это сделать?

Голова ... больно.

Спасибо!

1 Ответ

2 голосов
/ 23 сентября 2011

Не уверен, что понимаю задачу, но постараюсь помочь в меру моего понимания.Таким образом, имя класса окна является динамическим, поэтому вы замаскировали его подстановочным знаком.Но вы говорите, что хотите использовать имя класса в любом случае, если вы можете его параметризировать.Таким образом, кажется, что есть способ получить имя класса во время выполнения теста откуда-то.Если это так, вы можете поместить имя класса в переменную и передать эту переменную методу WaitWindow в качестве параметра и замаскировать заголовок, чтобы избежать использования заголовков для конкретного языка:

clsName := ....; // get it from somewhere
w := p.WaitWindow(clsName, '*', 1, 10000);
if w.Name='frmBasicOpt' then
begin

Если я понимаюне правильно и нет никакого способа узнать имя класса заранее, вы можете рассмотреть возможность использования другого подхода для определения окна параметров без указания заголовка.Возможное решение:

  1. Когда диалоговое окно открывается, оно становится активным.Таким образом, вы можете получить диалог через Sys.Desktop.ActiveWindow.

  2. Если это приложение MFC, обратите внимание на свойство ControlID окна - это то, что можно установить вкод приложения, который будет использоваться для распознавания объектов.Таким образом, вы можете использовать метод FindChild, чтобы найти окно по значению свойства.

  3. Если у окна есть несколько дочерних объектов, характерных только для этого окна, вы можете создать функцию, котораяполучит все дочерние окна объекта Process (FindAllChildren), перебирает список и проверяет, какие из них имеют эти конкретные дочерние объекты.

Есть ли что-нибудь для этой работы для вас?Если нет, то немного больше информации о вашей задаче может помочь мне сделать другие предложения.

Alex

...