Как передать URL-адрес приложения через командную строку с файлом функций Cucumber с помощью параметров cucumber?

#selenium #cucumber #command-line-arguments #cucumber-jvm #cucumber-java

Вопрос:

В настоящее время у нас есть 9 различных URL-адресов в области наших требований, и он реализован в виде URL-адреса приложения файла конфигурации. Каждый раз, когда мне нужно изменить URL-адрес приложения, мне нужно вручную обновить URL-адрес в файле конфигурации, а затем я могу выполнить сценарий require, что является утомительной задачей.

Я хотел бы передать URL-адрес приложения в аргументе командной строки.

Текущая конфигурация конфигурационного файла.

 #application.url=http://node-1.nginx.portal.da-1.can.qa.aws.com
#http://node-1.nginx.portal.da-1.QA1.aws.com
#http://node-1.nginx.portal.da-1.QA2.qa.aws.com
#http://node-1.nginx.portal.da-1.QA3.qa.aws.com
#http://node-1.nginx.portal.da-1.QA4.qa.aws.com
#http://node-1.nginx.portal.da-1.QA5.qa.aws.com
#http://node-1.nginx.portal.da-1.QA6.qa.aws.com
 
 public void LaunchApplication() {
        LOG.info("Launching web application URL: "   CONFIG.getProperty("application.url"));
        driver.manage().deleteAllCookies();
        driver.get(CONFIG.getProperty("application.url"));
    }
 

Ответ №1:

Собираюсь сделать предположение, что вы запускаете свои тесты на селеновые огурцы как проект maven.

Используя maven, вы можете создавать столько системных свойств maven, сколько захотите, я часто делаю это для своих команд mvn для моих конвейеров сборки CI/CD с использованием Дженкинса.

Вот что я бы сделал

  1. Обновите свой метод, добавив переменную системного свойства:
     public void LaunchApplication() {
      String appUrl = System.getProperty(applicationUrl);
    
      LOG.info("Launching web application URL: "   appUrl);
      driver.manage().deleteAllCookies();
      driver.get(appUrl);
    }
     
  2. Передайте свойство в качестве команды mvn, например:
    mvn test -Pcucumber -Dcucumber.options="--tags @app-smoke-001" -Dbrowser=chrome -Dclose_browser=yes -DapplicationUrl="http://node-1.nginx.portal.da-1.can.qa.aws.com"

Комментарии:

1. Этот. И если у вас есть набор URL-адресов для одной и той же среды, используйте разные файлы конфигурации и укажите имя файла конфигурации в качестве параметра среды.

2. @M. P. Korstanje — хороший крик, определенно лучшее предложение о недвижимости там

3. Можете ли вы дать мне ссылку на один и тот же файл свойств, т. е. на разные файлы свойств для разных конфигураций URL-адресов? Я сверяюсь с первым предложением, предоставленным djmonki, как упоминалось выше. Буду держать вас в курсе.

4. @djmonki, пытаясь реализовать предложенный вами способ, получает URL-адрес как нулевой. Не могли бы вы, пожалуйста, предложить способ объявления переменной здесь, кажется, я что-то здесь упускаю. публичное приложение запуска с аннулированием() { Строка applicationUrl = null; //Строка applicationUrl = null; Строка AppURL = System.getProperty(applicationUrl); LOG.info(«URL-адрес запуска веб-приложения:» приложение); driver.manage().deleteAllCookies(); driver.get(приложение); }

5. Такое же поведение — исключение из НЛП. @M. P. Korstanje — Можете ли вы поделиться своими предложениями по различным конфигурациям среды и передать их через командную строку?