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

Фотография

Как перехватить окно ошибки сценария в Internet Explorer?


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

#1 VZuev

VZuev

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Зуев Владимир

Отправлено 29 марта 2012 - 19:57

На определенном этапе выполнения скрипта вылетает окно "Ошибка сценария Internet Explorer" (ie8).
ТС вместо события UnexpectedWindow открывает еще одно окно Explorer и пытается продолжить работу.
Но мне нужно что бы все было в одном окне.
Может кто что подскажет?

TestComplete 7, jscript, .NET
  • 0

#2 VZuev

VZuev

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Зуев Владимир

Отправлено 30 марта 2012 - 12:06

Написал такое:

if (Aliases.iexplore.FindChild("WndCaption", "Ошибка сценария Internet Explorer").Exists)
{
Log.Error(Aliases.iexplore.FindChild("WndCaption", "Ошибка сценария Internet Explorer", 5).FindChild("Name", "*Panel*spnError*", 5).innerText)
Aliases.iexplore.FindChild("WndCaption", "Ошибка сценария Internet Explorer", 5).Close();
}

Но как сами понимаете, вставлять везде это -- не лучший выход.

У кого есть идеи по привязке к какому-нибудь событию?
  • 0

#3 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 30 марта 2012 - 16:27

TestComplete генерирует событие OnUnexpectedWindow если не может выполнить действие над UI объектом из-за того, что некоторое модальное окно мешает получить доступ к этому объекту. Судя по всему, в вашем случае тест не пытается выполнить никаких действий в момент, когда появляется сообщение об ошибке.

Вижу два возможных решения:
1. Всё-таки вставлять везде, где может возникнуть ошибка, код обработки сообщения об ошибке. Только его надо вынести в отдельную процедуру и звать оттуда.
2. Использовать таймер, проверяя наличие окна с ошибкой каждую минуту, например. Подробнее о таймерах почитайте тут.
  • 0
С уважением,
Дмитрий

#4 VZuev

VZuev

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Зуев Владимир

Отправлено 30 марта 2012 - 18:02

TestComplete генерирует событие OnUnexpectedWindow если не может выполнить действие над UI объектом из-за того, что некоторое модальное окно мешает получить доступ к этому объекту. Судя по всему, в вашем случае тест не пытается выполнить никаких действий в момент, когда появляется сообщение об ошибке.

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


Спасибо, так сейчас и делаю.

А есть ли библиотеки c расширенным числом событий? (Ну а вдруг?)
  • 0

#5 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 02 апреля 2012 - 18:56

Едва ли они существуют, ведь эти события являются встроенными в код самого TestComplete'а. Трудно себе представить, что кто-то "снаружи" сможет встроить дополнительные события. Однако, вы можете обрабатывать таким образом события ActiveX объектов внутри тестируемого приложения.
  • 0
С уважением,
Дмитрий


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

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