Сиеста: "Невозможно выполнить код из освобожденного скрипта"

У меня есть сценарий тестирования, где мне нужно получить доступ к предварительно загруженному файлу из объекта окна после входа и выхода из страницы.

Конфигурация жгута:

var Harness = Siesta.Harness.Browser.ExtJS;
    Harness.configure({
        preload : [
            'vuxtest.js' 
        ],
        hostPageUrl : '../vux/',
        performSetup : false
    });

Тестовый объект:

 {  
    url : 'Test.js',
    separateContext : true
 }

Предварительно загруженный файл vuxtest.js устанавливает объект window.vuxtest.

Скелет Test.js включает в себя:

startTest(function(test) {

   var vuxtestObj = test.global.vuxtest; ...

    vuxtestObj.run(test, 'Icons', function() { 

       test.it('Sign out - Sign in - Test Grid '+ row, function(t) {

           t.chain(
                   //sign out
                   {
                       ...
                   },
                   //sign back in
                   {
                       ...
                   },
                   //call function from vuxtestObj
                   {
                        vuxtestObj.funcA();
                   }
           );
         });
    });
});

Этот код работает в Chrome, но не в IE, так как он прерывается на vuxtestObj.funcA() с ошибкой: невозможно выполнить код из освобожденного скрипта. Любая идея, что я могу сделать, чтобы это исправить?

1 ответ

Похоже, что обратный вызов был выгружен из объекта, в котором он определен, после некоторой задержки при выполнении запроса. Вы обычно видите это сообщение, когда это происходит в IE, но другие браузеры просто игнорируют.

Попробуйте обернуть обратный вызов в блок try-catch:

try {
   t.chain(
   //sign out
   {
       ...
   },

   //sign back in
   {
       ...
   },

   //call function from vuxtestObj
   {
      vuxtestObj.funcA();
   }
   );
}
catch(err) {

}
Другие вопросы по тегам