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

Фотография

Как сделать универсальный скрипт?


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

#21 Гость_Guest_*

Гость_Guest_*
  • Guests

Отправлено 09 августа 2004 - 10:10

Подскажите: есть программа которую надо протестировать, в этой программе имена диологов меняются от версии к версии, как можно сделать универсальный скрипт, чтобы он выполнял одинаковые действия в любой версии(например нажималась одна и таже кнопка)?

Приветствую!

Именно для решения этой проблемы в TestComplete реализована функциональность Name Mapping. Советую почитать про нее в документации и посмотреть пример в <TestComplete 3>\Samples\Scripts\DDT&NameMapping\

Regards,
Alex
[TeamAQA]
================================

#22 Darkus

Darkus

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

  • Members
  • PipPipPipPip
  • 424 сообщений
  • Город:Казахстан, г.Астана

Отправлено 17 августа 2004 - 07:53

Не советовал бы я с мапингом сталкиваться. Уже пробовал как -то. ... Потом половина объектов понимается ТК, а половина нет. Уважаемый Alex наверное знает какие проблемы начинаются, если начать использовать мапинг не с самого начала. Мы это как то уже обсуждали на форуме automatedqa либо здесь.
Хотя, может я и ошибаюсь, если что-то изменилось к лучшему с тех пор.
  • 0

#23 Гость_eLaKeRi_*

Гость_eLaKeRi_*
  • Guests

Отправлено 23 августа 2004 - 15:49

Уж не знаю, правильно ли я понимаю вопрос, однако, постараюсь выдвинуть свою версию происходящего.
У тебя ситуация такая, что при каждой следующей сборке продукта, програмеры меняют заголовки окон. Вследствие чего, ты не можешь опираться на них в своих скриптах. Ты ищешь возможность создания универсального скрипта, который бы работал основываясь не на заголовках окон.
Если всё верно, то могу сказать так, в документации TC любое окно определяется иерархией следующего плана:

ИМЯ ПРОЦЕССА->КЛАСС ОКНА,ЗАГОЛОВОК,ИНДЕКС->ДОЧЕРНЕЕ ОКНО (КЛАСС ОКНА,ЗАГОЛОВОК,ИНДЕКС)->и т.д.

КЛАСС ОКНА - это тип окна, экземпляр которого програмер создаёт в коде
ЗАГОЛОВОК - это заголовок окна, который передаётся в функцию регистрации окна соответствующим параметром
ИНДЕКС - это номер, который последовательно, в зависимости от порядка создания, присваивается окнам с одинаковыми КЛАССОМ и ЗАГОЛОВКОМ в одном контексте, операционной системой!!!.
На самом деле для операционной системы (речь о Windows), существует плоская модель идентификации окон - по так называемым хэндлам. TC обнаружив создание приложением окна с одинаковым контекстом, классом (типом) и заголовком, но другим хэндлом, регистрирует для него новый индекс, который равен "предыдущий индекс" + 1.
Исходя из выше сказанного, можно сделать вполне логичный вывод, что при строгой последовательности создания окон в приложении (например, окна создаются последовательно в коде программы, которая не является многопоточной), при идентификации окна в TC можно опираться только на КЛАСС ОКНА и ИНДЕКС.
В связи с этим, если при запуске тестового скрипта окно по выше описанной схеме "КЛАСС ОКНА и ИНДЕКС" не обнаруживается, значит программисты сменили порядок их создания, либо добавили одно или несколько.
Если речь идёт о смене этого индекса в одной тестовой сессии, т.е. скрип "щёлкнул" правой кнопкой мыши и появилось контекстное меню, которое является окном с индексом №М, а при повторных "щелчках" появляется окно с индексом М+N и так далее для последующих "щелчков" (M+N+N+...N), то это говорит о том, что ресурс занимаемый окном в программе не освобождается, а енто и есть баг програмеров (утечка памяти).
А в общем, правильно было бы создать структуру, держащую в себе заголовки всех окон, применяемых приложением, и передавать её поля в качестве параметров процедурам TC Window и т.п. Тогда появляется возможность менять их названия централизовано.

Вот в общем-то и вся математика :-).
Удачи.

#24 Гость_Guest_*

Гость_Guest_*
  • Guests

Отправлено 25 августа 2004 - 11:13

Не советовал бы я с мапингом сталкиваться. Уже пробовал как -то. ... Потом половина объектов понимается ТК, а половина нет. Уважаемый Alex наверное знает какие проблемы начинаются, если начать использовать мапинг не с самого начала. Мы это как то уже обсуждали на форуме automatedqa либо здесь.

Приветствую :)

Да, было такое... Честно говоря, я так и понял, были-ли изменения, или просто я все делал неправильно, но с полгода назад у нас в приложении произошло расширение интерфейса и я реализовал "системные" функции работы с этим расширением с применением именно маппинга. Получилось достаточно неплохо и сосуществует со старым кодом, который маппинг не использует.

Собственно по заданному изначально вопросу (извиняюсь, ветку внимательно не читал, только просмотрел :S) - если никто еще не советовал, то посмотрите ControlID плагин на сайте Automated (http://www.automated.../tc_plugins.asp) - возможно, он сможет помочь.


Regards,
Alex
[TeamAQA]
================================


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

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