programing

프로젝터를 실행할 수 없음 - ECONNREFUSED 연결 ECONNREFUSED

magicmemo 2023. 3. 2. 22:10
반응형

프로젝터를 실행할 수 없음 - 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.http는 다음과 같습니다.

'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)

내가 뭘 잘못하고 있지?

이 문제는 --standalone 플래그를 사용하여 해결했습니다.

webdriver-manager start --standalone

config.js에서 다음 행을 삭제함으로써 동작하게 되었습니다.

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

셀레늄 서버를 운영하고 있습니까?git README에는 다음과 같이 기술되어 있습니다.

웹 드라이버JS는 기본적으로 셀레늄 서버를 포함하지 않습니다. 독립 실행형 셀레늄 서버를 시작해야 합니다.최신 selenium-server-standalone만 있으면 됩니다.

출처 : https://github.com/angular/protractor

이 오류 메시지는 다음과 같습니다.

[ECONNREFUSED] 접속 시도가 무시되었거나(타깃이 접속을 수신하지 않기 때문에) 명시적으로 거부되었습니다.

Webdriver 매니저의 URL을 확인합니다.기본 URL은 다음과 같습니다.

http://localhost:4444/wd/hub

백그라운드프로세스를 사용하여 Webdriver-manager를 실행하고 다음으로 protractor를 실행합니다.

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

그러면 Selenium Server가 시작되고 많은 정보 로그가 출력됩니다.프로젝터 테스트는 로컬 브라우저를 제어하기 위한 요청을 이 서버로 보냅니다.이 서버를 실행 상태로 유지

레퍼런스

이 문제는 Node와 Protractor 버전이 호환되지 않기 때문에 발생하였습니다.

내 수정은...

  1. 노드를 최신 버전으로 업데이트(이 경우 v7.0.0)

https://stackoverflow.com/a/19333717/1902831에 기재되어 있는 절차를 따릅니다.

  1. 다음을 사용하여 최신 버전(이 경우 4.0.10)을 설치합니다.

npm install -g 프로젝터

  1. 다른 단말기를 열고 다음 명령을 실행합니다.

webdriver-manager 업데이트

웹 드라이버 매니저의 기동

  1. 다음 명령을 사용하여 다른 터미널에서 테스트를 수행합니다.

굴절기 콘도js

npm protractor-webdriver grunt 플러그인(https://www.npmjs.org/package/grunt-protractor-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)

grunt 플러그인의 keepAlive 옵션을 사용하여 이 문제를 해결합니다.

Gruntfile.js 설정은 다음과 같습니다.

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

이게 도움이 됐으면 좋겠어요.

JM.

도 같은창을 후 것입니다.webdriver-manager startEnter 키를 누르지 않고(Enter 키를 누르면 selenium 서버가 종료되고 이유를 알 수 없음) 다른 cmd 창을 열고 테스트를 호출합니다.

@Alexandros Spyropoulos씨, 나는 어떻게 견인기를 돌리는지를 알아내는 데 꽤 시간이 걸렸고, 같은 문제가 있었다고 생각한다.하나의 터미널 탭을 열고 webdriver-manager start --standalone을 실행해야 합니다.그런 다음 다른 터미널 태그를 열고 프로젝터 **.conf.js를 실행합니다.

같은 있었습니다만, 사용하고 있었습니다.- ECONNREFUSED를 사용하고 있습니다.grunt-protractor-runner이 경우 미묘한 점은 도커 컨테이너 내에서 E2E 환경 전체(테스트 파일, 웹 애플리케이션 및 백엔드 전체)를 실행하고 있었다는 점입니다.

나는 견인기를 작동시켜 보았다.

  • grunt-protractor-webdriver웹드라이버를 '다운로드'하여 실행하는 작업(차이 없음)
  • 하게 하거나 유효하게 하지 directConnect ★★★★★★★★★★★★★★★★★」keepAlive설정(Selenium을 통과하면 Chromedriver와 관련된 크래시가 발생합니다.이 중 하나는 여기서 설명되었습니다).

해결책은 비교적 간단했습니다. 컨테이너에 할당되는 메모리 양을 늘리는 것이었습니다.Windows 10 호스트 머신으로, 다음의 순서를 실행했습니다.

  1. 실행합니다.VBoxManage.exe modifyvm default --memory 8192 셸 통해) 머신을 에 (Docker 스크립트를 ) (Docker Quickstart 스크립트에 ) (Docker Quickstart 스크립트) (Docker Quickstart 스크립트) (Docker Quickstart 스크립트) (Docker Quickstart 스크립트) (Docker Quickstart 스크립트)에 상당) (Docker Quick Start 스크립트)를 사용합니다.docker-machine start(이 SO 답변 덕분에)
  2. 컨테이너를 하도록 셸 하여 " " " 를 합니다.--shm-size=4Gdocker run명령어를 입력합니다.(문서 참조)
    • 하려면 동작하다를 실행하면 .df -h머신에서 "메모리 용량"에 메모리 양을 합니다./dev/shm.

그 결과, ECONNREFUSED와 같이 설명할 수 없는 에러는 없어졌습니다.

제공된 굴절기 데모를 실행하는 경우 selenium과 동일한 명령 프롬프트에서 굴절기 구성을 실행해야 합니다.셀레늄 서버와 프로젝터를 개별적으로 실행해 보십시오.

다음 명령을 사용하여 첫 번째 셀레늄이 실행되는지 확인합니다.

webdriver-manager start --standalone

그리고 별도의 명령 창에서 영사기를 실행합니다.

protractor conf.js

(내 경우 conf.js는 설정 파일)

Selenium Docker 그리드/스탠드 아론의 @David Remie와 같은 문제에 직면했습니다.최소한의 RAM/CPU로 웹 드라이버가 가동되기 전에 테스트가 시작됩니다.리소스 소모가 적은 접근 방식은 테스트 전에 몇 초간 기다리는 것입니다('sleep 5' 실행 등).

RAM을 증설하면 이 문제의 회피책으로 충분할 수도 있지만, 실제 문제는 https://hub.docker.com/r/selenium/node-base/dockerfile 기반의 이미지에서 Selenium CMD(/opt/bin/entry_point.sh, Web 드라이버를 실행하는 슈퍼바이저 기동)가 Selenium Web 드라이버를 기동하는 데 시간이 걸린다는 것입니다.

webdriver-manager start -----는 도움이 되지 않았지만, 아래는 도움이 되었습니다.

webdriver-manager start -- 스탠드아론

언급URL : https://stackoverflow.com/questions/20055593/unable-to-run-protractor-econnrefused-connect-econnrefused

반응형