2015-06-01 3 views
1

В моих «conf.js» тестовые наборы расположены следующим образом (с использованием WebDriver saucelab в):Транспортир: очистка после набора тестов закончен

suites: { 
    abc: './abc/spec.js', 
    xyz: './xyz/spec.js', 
    pqr: './pqr/spec.js' 
}, 

Проблема с описанной выше конструкцией, если один из предупреждений коробки/окно неожиданно появляется в одном наборе тестов, тестовые пакеты после того, как этот конкретный пакет страдает и начинает сбой.

Есть ли встроенный способ в транспортировке, чтобы закрыть все окна/оповещение и т. Д., Когда набор тестов закончен или его можно обрабатывать вручную?

+0

Не могли бы вы добавить более подробную информацию о том, как они терпят неудачу? Stacktrace было бы хорошо видеть. – alecxe

+0

Предположим, что в abc/spec.js открылось неожиданное всплывающее окно, и в скрипте он не обрабатывался. Итак, если в /xyz/spec.js он хочет нажать кнопку, он не сможет щелкнуть по нему из-за необработанного всплывающего окна, открытого в предыдущем spec. Я хочу, чтобы обработать все эти неожиданные предупреждения, которые нужно очистить, прежде чем запускать следующий пакет. –

ответ

0

Из чего я понимаю, нет места в protractor, чтобы обеспечить логику «перед набором тестов» или «после набора тестов» (исправьте меня, если я ошибаюсь).

Идея заключается в том, чтобы использовать afterEach(), попробуйте переключиться на alert, dismiss() это, если существует (или accept() в зависимости от того, что вам нужно), ничего не делать, если не существует:

describe("My test", function() { 
    afterEach(function() { 
     browser.switchTo().alert().then(
      function (alert) { 
       alert.dismiss(); 
      }, 
      function (err) {} 
     ); 
    }); 

    it("Test smth", function() { 
     // ... 
    }); 
}); 

Смотрите также:

+0

Это один из способов, но не очень эффективный, поскольку он замедляет набор тестов из-за проверки после каждого «этого». Для моей цели я могу добавить еще одно «это» после последнего «этого» теста и выполнить эту работу. –

+0

Моя цель состояла в том, чтобы задать вопрос, должен ли транспортир иметь встроенную поддержку, и, как я могу понять, на данный момент транспортир не поддерживает его. –

+0

@AmanGupta хорошо, ну, есть также возможность заставить транспортир перезапускать браузер каждый раз, используя настройку 'restartBrowserBetweenTests', но это значительно замедлит ваши тесты. Что касается предупреждений, вы должны закрыть их вручную в любом случае. – alecxe

0

Вот функц ion Я написал, который обрабатывает несколько окон и неожиданные предупреждения. Он не закрывает главное окно, как требуется в следующем наборе тестов.

this.cleanUp = function(){ 
     browser.driver.getAllWindowHandles().then(function(handles){ 
      for(var i=handles.length-1;i>-1;i--){ 
       browser.switchTo().window(handles[i]); 
       browser.switchTo().alert().then(function(alert){ 
        alert.dismiss(); 
       },function(err){}); 
       if(i) 
        browser.close(); 
      } 
     },function(err){}); 
    }; 
Смежные вопросы