2015-10-02 2 views
1

Транспортир ждет завершения процесса Angular.js, прежде чем продолжить выполнение потока. Он делает это на каждом шаге (после каждого вызова click() и т. Д.).Могу ли я добавить еще одно условие в синхронизацию Angular.js

Я тестирую приложение с множеством «загрузчиков», которые по какой-то причине не пойманы этой синхронизацией, и я получаю много ошибок.

Я могу вручную подождать после каждой инструкции, но было бы хорошо выполнить это ожидание после каждой инструкции.

Есть ли способ добавить еще одно условие к механизму синхронизации транспортира?

+0

Вы пытались использовать неявное ожидание, которое выполняется после каждого и каждой инструкции транспортир? Вы можете написать его в своей функции 'onPrepare()' файла conf.js - 'browser.manage(). Timeouts(). ImplicitlyWait (35000);'. Если вы получите ошибку тайм-аута ожидания, увеличьте свой 'defaultTimeoutInterval: 80000', чтобы транспортир ожидал более длительного периода времени до его тайм-аутов. –

+0

Я понимаю вашу точку зрения. Но мне кажется, что это не обычный тайм-аут, а wait(), пока графический загрузчик не исчезнет. У меня уже есть функция waitUntilLoaderDissapears(), но мне нужно, чтобы эта функция выполнялась после каждой инструкции транспортира. Я думаю, что обходным решением было бы поставить эту функцию в afterEach(), но я думаю, что это выполняется только после каждой функции it(). – hhaamm

ответ

1

Хорошо, это немного хакерское, но я нашел этот путь. Трантрактор использует команду waitForAngular() после каждой команды webdriver. https://github.com/angular/protractor/blob/f034e010156a85cf1826b95eb7f41f50ef5a1791/lib/protractor.js#L319

Вы можете изменить эту функцию в, например onPrepare:

browser.waitForAngular = function(opt_description) { 
     var description = opt_description ? ' - ' + opt_description : ''; 
     var self = this; 
     waitUntilLoaderDissapears(); 
     if (this.ignoreSynchronization) { 
      return self.driver.controlFlow().execute(function() { 
       return true; 
      }, 'Ignore Synchronization Protractor.waitForAngular()'); 
     } 
    }; 
Смежные вопросы