2016-07-11 5 views
0

У меня есть два @ после тегов, @ close-browser и @ screenshot.Так, прямо сейчас, когда я использую оба тега для функции файл сначала выполняется @ close-browser, и он не выполняется после метода для @screenshot. Есть ли способ, которым я могу сказать, огурец, чтобы запустить @screenshot после метода в первую очередь?Cucumber-JUnit, есть способ управлять порядком, в котором @ beforefore и @ после того, как теги запускаются

ответ

3

Снимок экрана следует снимать в одном из методов аннотированных @After. Как это:

@After 
public void finish(Scenario scenario) { 
    try { 
     byte[] screenshot = 
     helper.getWebDriver().getScreenshotAs(OutputType.BYTES); 
     scenario.embed(screenshot, "image/png"); 
    } catch (WebDriverException somePlatformsDontSupportScreenshots) { 

    System.err.println(somePlatformsDontSupportScreenshots.getMessage()); 
    } 
    finally { 
     helper.getWebDriver().close(); 
    } 
} 
+0

Проблема с этим подходом Иногда я не хочу закрывать браузер. Если сценарий не работает, причина в том, что для некоторых из моих функций я использую один и тот же браузер для всех сценариев. Если я использую это после метода, он закроет браузер, а следующий сценарий не найдет сеанс браузера и завершится с ошибкой. – Samantha

+0

Я не знаю, правильно ли использовать один и тот же сеанс браузера для всех сценариев в некоторых файлах функций. – Samantha

+0

@tosha это stronlgy, рекомендованный лучшими практиками Cucumber, чтобы все ваши сценарии были полностью изолированы друг от друга. Говоря это, вы все равно можете использовать один и тот же сеанс, пока вы очищаете файлы cookie в одном из ваших аннотированных методов @ @ After. –

7

Существует «порядок» аргумент, что вы можете перейти к @Before и @After контролировать порядок исполнения:

@Before(order = 5) 
public void foo() {} 

@After(order = 500) 
public void bar() {} 

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

+0

Я проверяю, что isscanrio не удалось, и если это не удается Я выполняю какой-то код? Что делать, если я запускаю два файла функций, последний сбой завершился, и первый шаг следующей функции также не удастся из-за неудачного сценария огурцов. Вы знаете, как справиться с такой ситуацией? Ваша помощь будет принята с благодарностью. – Samantha

+0

@tosha: пожалуйста, начните новый вопрос переполнения стека –

+0

Я проверил – Samantha