Как управлять несколькими файлами .js, чтобы запускать автоматические тестовые случаи, используя их теги в CucumberJS? - PullRequest
0 голосов
/ 04 июня 2019

Я использую CucumberJS с Selenium-Webdriver для автоматизации моих тестовых случаев.В настоящее время у меня есть несколько файлов с соответствующими файлами определений шагов.Когда я пытаюсь запустить тестовые случаи, выдается ошибка:

Ошибка: ранее настроенная служба ChromeDriver все еще работает.Вы должны выключить его, прежде чем сможете изменить его конфигурацию.в Object.setDefaultService (D: \ code \ egov-test-case \ node_modules \ selenium-webdriver \ chrome.js: 305: 11) в новом Мире (D: \ code \ egov-test-case \ features \ support \ world.js: 21: 12) на объекте.(D: \ code \ egov-test-case \ features \ steps \ create_approver_remittance_master.js: 15: 13) в Module._compile (module.js: 653: 30) в Object.Module._extensions..js (module.js): 664: 10) в Module.load (module.js: 566: 32) в tryModuleLoad (module.js: 506: 12) в Function.Module._load (module.js: 498: 3) в Module.require (модуль.js: 597: 17) по требованию (internal / module.js: 11: 18) по адресу supportCodePaths.forEach.codePath (D: \ code \ egov-test-case \ node_modules \ cucumber \ lib \ cli \ index.js:142: 42) в Array.forEach () в Cli.getSupportCodeLibrary (D: \ code \ egov-test-case \ node_modules \ cucumber \ lib \ cli \ index.js: 142: 22) в D: \ code \ egov-test-case \ node_modules \ cucumber \ lib \ cli \ index.js: 169: 41 в Generator.next () в asyncGeneratorStep (D: \ code \ egov-test-case \ node_modules \ cucumber \ lib \ cli \ index.js: 44: 103) ошибка Команда не выполнена с кодом выхода 1. info Посетите https://yarnpkg.com/en/docs/cli/run для получения документации об этой команде.

Поскольку я автоматизирую тесты, я поместил приведенный ниже код дляавтоматизация chrome в файле world.js,Затем он попытался импортировать драйвер из world.js, но все равно выдает ту же ошибку.

 class World {
  constructor() {

    const { setDefaultTimeout } = require('cucumber');

    const webdriver = require('selenium-webdriver');
    const chrome = require('selenium-webdriver/chrome');
    const path = require('chromedriver').path;

    const screen = {
      width: 640,
      height: 480
    };

    setDefaultTimeout(100 * 5000);

    var service = new chrome.ServiceBuilder(path).build();
    chrome.setDefaultService(service);

    this.driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
  }
}

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Я нашел решение своей проблемы.На самом деле драйвер инициализировался несколько раз, и поэтому он выдавал мне вышеуказанную ошибку.Я создавал драйвер внутри конструктора в классе World в файле world.js.Каждый раз, когда я брал экземпляр класса World, я создавал новый драйвер.Я переместил объявление драйвера за пределы класса как const driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build() и создал метод как initialize() { return driver; } в файле world.js.Я вызываю метод initialize () в моих файлах определения шагов как let world = new World(); let driver = world.initialize().Теперь мне пора!

0 голосов
/ 05 июня 2019

Что вам может понадобиться, это убивать ваш браузер после каждого запуска теста, так как контейнеры используются повторно (следовательно, почему браузер уже может работать). Для этого вы захотите добавить файл перехвата в вашу папку поддержки и добавить что-то вроде следующего:

After({}, async function(scenario) {
  this.driver.quit();
  }
});

для получения дополнительной информации посмотрите документы https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/hooks.md

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