Подтвердить что ты не робот

Невозможно запустить Protractor - ECONNREFUSED подключить ECONNREFUSED

Я пытаюсь изучить AngularJS. В рамках этого я хочу научиться использовать сквозное тестирование. В настоящее время у меня такая структура каталогов:

node_modules
  .bin
  ...
  protractor
    ...
    node_modules
       .bin
       adam-zip
       glob
       minijasminenode
       optimist
       saucelabs
       selenium-webdriver
protractor
  config.js
src
  tests
    test.e2e.js

Мой файл config.js выглядит следующим образом:

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',

    capabilities: {
        'browserName': 'chrome'
    },

    specs: [
        '../src/tests/test.e2e.js'
    ],

    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000
    }
};

test.e2e.js выглядит следующим образом:

'use strict';

describe('My Sample', function () {
    driver = protractor.getInstance();

    beforeEach(function () {
        driver.get('#/');
    });

    it('My First Test', function () {
        message = "Hello.";
        expect(message).toEqual('World.');
    });
});

Когда я пытаюсь запустить мои сквозные тесты с помощью транспортира, я запускаю из командной строки следующую команду:

node_modules\.bin\protractor protractor\config.js

Когда я запустил эту команду, я получаю следующую ошибку:

C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1542
      throw error;
            ^
Error: ECONNREFUSED connect ECONNREFUSED
    at ClientRequest.<anonymous> (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:12
7:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1528:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriv
er\lib\webdriver\webdriver.js:130:49)
    at Function.webdriver.WebDriver.createSession (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver
\lib\webdriver\webdriver.js:110:30)
    at Builder.build (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\builder.js:105:20)
    at runJasmineTests (C:\Src\MyProject\node_modules\protractor\lib\runner.js:191:45)
    at C:\Src\MyProject\node_modules\protractor\lib\runner.js:255:5
    at C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1178:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriv
er\lib\webdriver\promise.js:1438:20)
    at notify (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:328:12)
    at then (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:377:7)

Что я делаю неправильно?

4b9b3361

Ответ 1

Я решил это с помощью стандартного флага:

webdriver-manager start --standalone

Ответ 2

Я получил его работу, удалив следующую строку из моего config.js

seleniumAddress: 'http://localhost:4444/wd/hub',

Ответ 3

Вы используете сервер selenium? В модуле git README указано следующее:

WebdriverJS не включает в себя сервер selenium - вы должны запустить автономный сервер selenium. Все, что вам нужно - это последний сервер selenium-server-standalone.

источник: https://github.com/angular/protractor

Ответ 4

Сообщение об ошибке связано со следующим:

[ECONNREFUSED] Попытка подключения игнорировалась (поскольку объект не прослушивает подключения) или явно отклонен.

Проверьте URL-адрес менеджера Webdriver. URL-адрес по умолчанию:

http://localhost:4444/wd/hub

Используйте фоновый процесс для запуска webdriver-manager, затем запустите транспортир:

Start-Process webdriver-manager start -passthru
protractor conf.js

Это запустит сервер Selenium и выведет кучу информационных журналов. Тест Protractor отправит запросы на этот сервер для управления локальным браузером. Оставьте этот сервер запущенным

Ссылки

Ответ 5

Для меня это произошло из-за несовместимых версий Node и Protractor.

Мое исправление -

  • Обновите Node до последней версии (v7.0.0 в моем случае)

Выполните шаги, приведенные здесь fooobar.com/questions/18098/...

  1. Установите последнюю версию транспортиратора (4.0.10 в моем случае), используя:

npm install -g транспортир

  1. Откройте другой терминал и выполните следующую команду:

Обновление webdriver-manager

запуск webdriver-manager

  1. Запустите тесты в другом терминале, используя:

protractor conf.js

Ответ 6

Я также столкнулся с той же проблемой, трюк, который сработал у меня, - использовать два cmd-окна, оставив один открытым после ввода webdriver-manager start и без нажатия клавиши введите (если нажать клавишу ввода сервер селена выключен, не знаю, почему) откройте другое окно cmd и вызовите ваши тесты.

Ответ 7

Если вы используете плагин grunt для протранграфа-webdriver в формате npm (https://www.npmjs.org/package/grunt-protractor-webdriver), вы можете обнаружить такую ​​же ошибку. Это происходит из-за завершения webdriver перед завершением тестирования. Тест проходит успешно, а затем появляется сообщение типа:

Session deleted: Going to shut down the Selenium server
Shutting down Selenium server: http://127.0.0.1:4444
Shut down Selenium server: http://127.0.0.1:4444 (OKOK)

d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:145
      callback(new Error(message));
               ^
Error: ECONNREFUSED connect ECONNREFUSED
    at ClientRequest.<anonymous> (d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:145:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1547:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:440:14
    at process._tickCallback (node.js:419:13)

Я разрешаю это, используя параметр keepAlive в плагине grunt.

Вот моя конфигурация Gruntfile.js:

protractor_webdriver: {
        options: {
            keepAlive : true   // True to keep the webdriver alive
        },
        start: {
        },
    },
...

Надеюсь, это поможет кому-то.

JM.

Ответ 8

@Alexandros Spyropoulos, мне потребовалось некоторое время, чтобы понять, как запустить транспортир, и я думаю, что у нас была такая же проблема. Вы должны открыть одну вкладку терминала и запустить webdriver-manager start --standalone. Затем откройте другой тег терминала и запустите транспортир ***. Conf.js

Ответ 9

В надежде, что это может помочь кому-то: у меня была та же проблема - столкнулся с ECONNREFUSED с помощью grunt-protractor-runner. Нюансом для моего случая является то, что я запускал всю среду E2E (тестовые файлы, веб-приложение и весь бэкэнд) в контейнере Docker.

Я попытался запустить транспортир

  • с дополнительной задачей grunt-protractor-webdriver и без нее, чтобы запустить и запустить webdriver "вручную" (без разницы);
  • с настройками directConnect и keepAlive и без них (в обход селена и в результате сбоев, связанных с Chromedriver, один из которых был описан здесь).

Решение было довольно простым: увеличьте объем памяти, выделенной для контейнера. На моем компьютере с Windows 10 я выполнил следующие шаги:

  • Запустите VBoxManage.exe modifyvm default --memory 8192 (через пользовательскую оболочку script) перед запуском докер-машины (через Docker Quickstart script, что эквивалентно docker-machine start). (Спасибо этот ответ SO).
  • Изменение моей оболочки script для запуска моего контейнера по умолчанию, добавив аргумент --shm-size=4G к моей команде docker run. (См. документы)
    • Вы можете проверить, работает ли он, запустив df -h на гостевой машине, проверив объем памяти, установленный на /dev/shm.

В результате у меня больше нет необъяснимых ошибок, таких как ECONNREFUSED.

Ответ 10

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

Сделать первый первый селен выполняется следующей командой.

webdriver-manager start --standalone

И запустите транспортир в отдельном окне команд.

protractor conf.js

(В моем случае conf.js был конфигурационным файлом)

Ответ 11

Я столкнулся с проблемой, подобной той, с которой @David Remie столкнулся с сеткой/автономным модулем Selenium Docker. При минимальном объеме ОЗУ/ЦП тесты начнутся до того, как будет запущен веб-драйвер. Менее ресурсоемкий подход - это подождать несколько секунд перед тестированием (запустить "sleep 5" или что-то в этом роде).

Иногда для решения этой проблемы достаточно было увеличить объем ОЗУ, но реальная проблема заключалась в том, что CMD Selenium (/opt/bin/entry_point.sh запускает супервизор, который запускает веб-драйвер) из образа на основе https://hub. docker.com/r/selenium/node-base/dockerfile не торопился с запуском веб-драйвера Selenium.