cucumber -Параметризировать браузер во время выполнения без использования Testng или жесткого кодирования данных из файлов объектов параллельно - PullRequest
0 голосов
/ 05 марта 2019

Цель: параллельное выполнение браузеров, переданных во время выполнения в огурце@parameters {testng} вызывает отчеты об экстентах индивидуально для каждой функции

Код: В крюках у меня есть:

@ До

public void ScenariosetUp(Scenario scenario) throws Exception {
this.scenario = scenario;
        Log.startLog("Start of Test cases ");
        **TPBaseSteps.openBrowser();**

    }

TPBaseSteps class :  
    public static WebDriver openBrowser() throws Exception {

        String browserName = JsonReader.RetrieveTestDataFromExcel("browserConfig", "Browser");

        log.info("Chosen browser is " + browserName);
        if (!grid) {
            switch (browserName.toLowerCase()) {
            case "chrome":
                log.info("Launching Browse as  : " + browserName);
                WebDriverManager.chromedriver().setup();
                driver = new ChromeDriver();
                driver.manage().deleteAllCookies();
            case "firefox":
                log.info("Launching Browse as  : " + browserName);
                WebDriverManager.firefoxdriver().setup();
                driver = new FirefoxDriver();
                driver.manage().deleteAllCookies();
                break;

}

Проблема: я передаю исключительное значение из Excel, которое RetrieveTestDataFromExcel читает и передает приведенному ниже коду. Но я хочу добиться этого для нескольких браузеров, у меня есть настройка сетки, поэтому, если я могу получить параметры в этом методе, я буду запускать их параллельно.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

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

Параметризация данных должна передаваться из файла признаков в методы реализации Step.Таким образом, Cucumber не предоставляет такую ​​возможность параметризации напрямую за один раз.

Единственное, что можно сделать для реализации вашего сценария, - это использовать теговые зацепки.

Feature File :- 3 Scenarios

@Chrome 
Scenario: This is First Scenario running on chrome browser
 Given this is the first step
 When this is the second step
 Then this is the third step

@Firefox 
Scenario: This is Second Scenario running on firefox browser
 Given this is the first step
 When this is the second step
 Then this is the third step

@IE
Scenario: This is Third Scenario running on ie browser
 Given this is the first step
 When this is the second step
 Then this is the third step

@Before("@Chrome")
    public void beforeFirst(){
        Log.startLog("Start of Test cases ");
        TPBaseSteps.openBrowser("Chrome");
        System.out.println("This will run only before the chrome Scenario");
    } 

@Before("@Firefox")
    public void beforeSecond(){
        Log.startLog("Start of Test cases ");
        TPBaseSteps.openBrowser("firefox");
        System.out.println("This will run only before the firefox Scenario");
    } 

@Before("@IE")
    public void beforeThird(){
        System.out.println("This will run only before the ie Scenario");
    }

 TPBaseSteps class :    
 public static WebDriver openBrowser(String browserName) throws Exception {

        log.info("Chosen browser is " + browserName);
        if (!grid) {
            switch (browserName.toLowerCase()) {
            case "chrome":
                log.info("Launching Browse as  : " + browserName);
                WebDriverManager.chromedriver().setup();
                driver = new ChromeDriver();
                driver.manage().deleteAllCookies();
            case "firefox":
                log.info("Launching Browse as  : " + browserName);
                WebDriverManager.firefoxdriver().setup();
                driver = new FirefoxDriver();
                driver.manage().deleteAllCookies();
                break;  

Или Pass Chrome|FF |IE как параметр в Scenario / Scenario Outline и получить значение параметра в шаге реализации метода.Но в этом случае открытый браузер не должен вызываться в хуке, но это не рекомендуется, как я понимаю.

Надеюсь, это помогло вам.

0 голосов
/ 06 марта 2019

Ниже описан подход для Ruby:

Здесь вы можете использовать cucumber.yml в качестве контроллера.cucumber.yml

BROWSERS = IE,Chrome,Firefox

Доступ к браузерам из хуков

 puts ENV['BROWSERS']

Надеюсь, это будет полезно.Дайте мне знать, если вам нужна дополнительная информация об этом подходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...