프로젝터를 실행할 수 없음 - 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 버전이 호환되지 않기 때문에 발생하였습니다.
내 수정은...
- 노드를 최신 버전으로 업데이트(이 경우 v7.0.0)
https://stackoverflow.com/a/19333717/1902831에 기재되어 있는 절차를 따릅니다.
- 다음을 사용하여 최신 버전(이 경우 4.0.10)을 설치합니다.
npm install -g 프로젝터
- 다른 단말기를 열고 다음 명령을 실행합니다.
webdriver-manager 업데이트
웹 드라이버 매니저의 기동
- 다음 명령을 사용하여 다른 터미널에서 테스트를 수행합니다.
굴절기 콘도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 start
Enter 키를 누르지 않고(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 호스트 머신으로, 다음의 순서를 실행했습니다.
- 실행합니다.
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 답변 덕분에) - 컨테이너를 하도록 셸 하여 " " " 를 합니다.
--shm-size=4G
의docker 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
'programing' 카테고리의 다른 글
MVC: 문자열을 JSON으로 되돌리는 방법 (0) | 2023.03.07 |
---|---|
Wordpress에서 Facebook 세션 가져오기 (0) | 2023.03.02 |
모든 기존 사용자에 대한 Wordpress 기본 표시 이름 변경 공개 (0) | 2023.03.02 |
Wordpress cron wp_schedule_single_event – 액션이 항상 작동하지 않음 (0) | 2023.03.02 |
GSON을 사용하여 Android에서 동적 "키" 및 "값"을 가진 JSON 구문 분석 (0) | 2023.03.02 |