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

Фотография

General Events


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

#1 XXX

XXX

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

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 24 мая 2011 - 11:19

Всем привет!подскажите плз что не так делаю..
Допустим есть несколько скриптов (unit-ов) , которые работают с разными приложениями.
Для каждого из них создаю EventControl , для того, чтобы описать OnUnexpectedWindow,OnLogEvent ...
В каждом таком EventControl-e указываю соответсвующий скрипт к которому применять данный обработчик события.
Но когда запускаю какойнибудь скрипт, и, например, появляется то самое UnexpectedWindow, то начинает запускаться обрабочик события,
который я создавал для другого скрипта, и получается что т.к. там вообще другое приложение то появляется куча ерроров...
  • 0

#2 ksena

ksena

    Активный участник

  • Members
  • PipPip
  • 99 сообщений
  • Город:Харьков


Отправлено 24 мая 2011 - 11:26

Вы уверены что появляется именно UnexpectedWindow? Он может просто не найти объект и вылететь на error. В свойствах проекта есть настройка "on Unexpected Window" что у вас установлено?
  • 0

#3 XXX

XXX

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

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 24 мая 2011 - 11:39

Вы уверены что появляется именно UnexpectedWindow? Он может просто не найти объект и вылететь на error. В свойствах проекта есть настройка "on Unexpected Window" что у вас установлено?



Уверен.
В ошибке лога написано,что не удалось найти процесс второго приложения,т.е. получается что сработал обработчик события не тот что я указал для данного скрипта, а другой.
  • 0

#4 ksena

ksena

    Активный участник

  • Members
  • PipPip
  • 99 сообщений
  • Город:Харьков


Отправлено 24 мая 2011 - 11:48

Вы создали OnUnexpectedWindow в EventHandlers, но он туда не заходит, правильно?
  • 0

#5 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 24 мая 2011 - 12:52

Мне кажется, вы ошибочно считаете, что EventControl определяет обработчики для событий конкретного скрипта. Это не так - события возникают не на уровне скрипта, а на уровне проекта, а EventControl'ы просто содержат список функций проекта, которые будут использованы для обработки событий. То, в каком скрипте возникает событие, и в каком скрипте находится функция-обработчик - не имеет значения; это могут быть разные скрипты, а может быть один и тот же скрипт.

Если добавить в проект несколько EventControl'ов, и с их помощью навешать на одно и то же событие несколько обработчиков, то при возникновении события будут выполнены все эти обработчики. Что и происходит в вашем случае.

Если вам нужно, чтобы обработчик OnUnexpectedWindow выполнял разные действия для разных приложений, реализуйте в обработчике условную логику (if..then, switch..case и т.п.). Или, как вариант, разнесите скрипты для разных приложений по разным проектам - тогда вы сможете использовать разные функции-обработчики для разных скриптов.
  • 0

#6 XXX

XXX

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

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 24 мая 2011 - 13:09

Мне кажется, вы ошибочно считаете, что EventControl определяет обработчики для событий конкретного скрипта. Это не так - события возникают не на уровне скрипта, а на уровне проекта, а EventControl'ы просто содержат список функций проекта, которые будут использованы для обработки событий. То, в каком скрипте возникает событие, и в каком скрипте находится функция-обработчик - не имеет значения; это могут быть разные скрипты, а может быть один и тот же скрипт.

Если добавить в проект несколько EventControl'ов, и с их помощью навешать на одно и то же событие несколько обработчиков, то при возникновении события будут выполнены все эти обработчики. Что и происходит в вашем случае.

Если вам нужно, чтобы обработчик OnUnexpectedWindow выполнял разные действия для разных приложений, реализуйте в обработчике условную логику (if..then, switch..case и т.п.). Или, как вариант, разнесите скрипты для разных приложений по разным проектам - тогда вы сможете использовать разные функции-обработчики для разных скриптов.



Спасибо!понял ошибку..
  • 0

#7 XXX

XXX

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

  • Members
  • PipPipPipPip
  • 284 сообщений
  • ФИО:Денис Викторович
  • Город:Санкт-Петербург


Отправлено 24 мая 2011 - 13:22

Тогда какой смысл вообще в одном проекте добавлять несколько EventControls ?
  • 0

#8 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 07 июня 2011 - 15:02

Тогда какой смысл вообще в одном проекте добавлять несколько EventControls ?

У EventControl'ов могут быть разные источники событий (Source object) - не только TestComplete, но и всякие там ActiveX-объекты в приложениях. Для обработки событий из разных источников в одном проекте как раз-таки и понадобится несколько EventControl'ов - по одному на каждый источник событий.
  • 0


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

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