General Events
#1
Отправлено 24 мая 2011 - 11:19
Допустим есть несколько скриптов (unit-ов) , которые работают с разными приложениями.
Для каждого из них создаю EventControl , для того, чтобы описать OnUnexpectedWindow,OnLogEvent ...
В каждом таком EventControl-e указываю соответсвующий скрипт к которому применять данный обработчик события.
Но когда запускаю какойнибудь скрипт, и, например, появляется то самое UnexpectedWindow, то начинает запускаться обрабочик события,
который я создавал для другого скрипта, и получается что т.к. там вообще другое приложение то появляется куча ерроров...
#2
Отправлено 24 мая 2011 - 11:26
#3
Отправлено 24 мая 2011 - 11:39
Вы уверены что появляется именно UnexpectedWindow? Он может просто не найти объект и вылететь на error. В свойствах проекта есть настройка "on Unexpected Window" что у вас установлено?
Уверен.
В ошибке лога написано,что не удалось найти процесс второго приложения,т.е. получается что сработал обработчик события не тот что я указал для данного скрипта, а другой.
#4
Отправлено 24 мая 2011 - 11:48
#5
Отправлено 24 мая 2011 - 12:52
Если добавить в проект несколько EventControl'ов, и с их помощью навешать на одно и то же событие несколько обработчиков, то при возникновении события будут выполнены все эти обработчики. Что и происходит в вашем случае.
Если вам нужно, чтобы обработчик OnUnexpectedWindow выполнял разные действия для разных приложений, реализуйте в обработчике условную логику (if..then, switch..case и т.п.). Или, как вариант, разнесите скрипты для разных приложений по разным проектам - тогда вы сможете использовать разные функции-обработчики для разных скриптов.
#6
Отправлено 24 мая 2011 - 13:09
Мне кажется, вы ошибочно считаете, что EventControl определяет обработчики для событий конкретного скрипта. Это не так - события возникают не на уровне скрипта, а на уровне проекта, а EventControl'ы просто содержат список функций проекта, которые будут использованы для обработки событий. То, в каком скрипте возникает событие, и в каком скрипте находится функция-обработчик - не имеет значения; это могут быть разные скрипты, а может быть один и тот же скрипт.
Если добавить в проект несколько EventControl'ов, и с их помощью навешать на одно и то же событие несколько обработчиков, то при возникновении события будут выполнены все эти обработчики. Что и происходит в вашем случае.
Если вам нужно, чтобы обработчик OnUnexpectedWindow выполнял разные действия для разных приложений, реализуйте в обработчике условную логику (if..then, switch..case и т.п.). Или, как вариант, разнесите скрипты для разных приложений по разным проектам - тогда вы сможете использовать разные функции-обработчики для разных скриптов.
Спасибо!понял ошибку..
#7
Отправлено 24 мая 2011 - 13:22
#8
Отправлено 07 июня 2011 - 15:02
У EventControl'ов могут быть разные источники событий (Source object) - не только TestComplete, но и всякие там ActiveX-объекты в приложениях. Для обработки событий из разных источников в одном проекте как раз-таки и понадобится несколько EventControl'ов - по одному на каждый источник событий.Тогда какой смысл вообще в одном проекте добавлять несколько EventControls ?
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных