source

프로젝터/셀레늄 "could found chromedriver at" (Windows에서)

bestscript 2023. 3. 16. 21:34

프로젝터/셀레늄 "could found chromedriver at" (Windows에서)

튜토리얼에 따라 프로젝터를 설치했는데 webdriver-manager update를 사용하면 다음과 같이 표시됩니다.

selenium standalone is up to date.
chromedriver is up to date.

견인기 테스트를 실행하려고 하면 다음과 같이 표시됩니다.

C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:42
            throw new Error('Could not find chromedriver at ' +
                  ^
    Error: Could not find chromedriver at C:\Users\****\AppData\Roaming\npm\node_modules\protractor\selenium\chromedriver.exe
        at LocalDriverProvider.addDefaultBinaryLocs_ (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:42:15)
        at LocalDriverProvider.setupEnv (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:59:8)
        at Runner.run (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\runner.js:308:31)
        at process.<anonymous> (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\runFromLauncher.js:32:14)
        at process.EventEmitter.emit (events.js:98:17)
        at handleMessage (child_process.js:318:10)
        at Pipe.channel.onread (child_process.js:345:11)
    [launcher] Runner Process Exited With Error Code: 8

local.dp.js를 확인해 보니 로부터 chromedriver를 로드하려고 했습니다.\node_protractor\selenium\selomedriver인데 chromedriver_2.9라는 이름의 빈 zip 파일만 있었습니다.

그래서 chromedriver를 수동으로 다운로드하여 이 위치에 복사하면 새로운 오류가 발생합니다.

C:\Users\****\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1549
      throw error;
            ^
Error: Server exited with 1
    at Error (<anonymous>)
    at ChildProcess.onServerExit (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\remote\index.js:193:11)
    at ChildProcess.g (events.js:180:16)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at Process.ChildProcess._handle.onexit (child_process.js:797:12)
[launcher] Runner Process Exited With Error Code: 8

생각나는 사람?

저도 이 에러에 직면하고 있었습니다만, 튜토리얼을 읽을 무렵에는 프로젝터와 웹 드라이버를 프로젝트의 로컬 의존관계로서 인스톨 하는 방법에 대해서는 다루지 않았습니다(./node_modules에 있습니다).

글로벌하게 설치하는 대신 grunt-protractor-runner를 사용하여 나중에 필요에 따라 연속 빌드 방식으로 테스트를 실행할 수 있기 때문에 이 솔루션을 사용할 수 있었습니다.

  1. 프로젝터 설치:

npm install protractor --save-dev

  1. selenium 및 웹 드라이버를 webdriver-manager와 함께 설치합니다.

./node_modules/protractor/bin/webdriver-manager update

한 후 를 해 ../node_modules/protractor서브폴더에서 확인할 수 있습니다.「 」라고 하는 .seleniumchromedriver는, in 에서 할 수 .

프로젝터가 "global"로 설치되지 않았기 때문에 명령줄에서 프로젝터를 호출하면 "commnad not found" 오류가 발생합니다. 이 명령어를 할 수 있습니다../node_modules/protractor/bin/protractor

npm」에서는, 를 제로로부터에, Web 를 자동적으로셋업 할 수 , 「 에서는 드라이버가 자동적으로 설정됩니다.따라서 다음 번에 모든 종속성을 0부터 설치할 때 npm에서 웹 드라이버를 자동으로 설정합니다." 파일: json ": "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

이게 더 도움이 되길...

프록시를 사용하는 경우 먼저 프록시를 설정한 후 웹 드라이버 업데이트를 실행하십시오.

npm config set proxy http://<proxy.com>:port

webdriver-manager update

저는 그 튜토리얼을 따라 했는데 같은 문제가 있었습니다.여기서의 문제는 selenium jar와 chrome 드라이버 exe의 경로를 프로젝터 설정 파일에 지정해야 한다는 것입니다.저는 AppData 폴더에 글로벌하게 설치되어 있기 때문에 mine protractor.confg.js 파일은 다음과 같습니다.

exports.config = {

specs: [
    'test/e2e/**/*.js'
],

chromeDriver: 'C:/Users/<username>/AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver.exe',

seleniumServerJar: 'C:/Users/<username>/AppData/Roaming/npm/node_modules/protractor/selenium/selenium-server-standalone-2.40.0.jar',

baseUrl: 'http://localhost:9000/'

};

그게 효과가 있는 것 같았어.

이런, 답이 너무 많아서...

Mac에서는 다음과 같이 동작했습니다.

$ npm install chromedriver
$ ln -sf ~/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe

그것을 고칠 더 나은 방법이 있을 것이다. 하지만 적어도 이것은 내가 넘어갈 수 있게 해준다.

한참을 둘러본 후, 나는 그 사람이package.jsonangular phonecat repo에 포함된 파일은update-webdrivertask.discloss.disclos

의 실행(「」를 사용)npm run update-webdriver을(를) (어느 쪽인가) 하다

크롬 드라이버는 어느 장소에나 존재할 수 있지만, "webdriver-manager"를 통해 설치하면 크롬 드라이버가 존재하는 위치에 있을 것으로 예상하는 것 같습니다.따라서 "npm install chromedriver"를 사용하여 설치할 수 있습니다.이것에 의해, /usr/local/lib/node_modules/chromedriver/lib/chromedriver와 같은 다른 장소에 배치할 수 있습니다.

이 경우 이 위치를 참조하도록 설정 파일을 설정해야 하지만 다음과 같은 간단한 솔루션이 있습니다.

webdriver-manager가 chromedriver 또는 selenium-standalone 중 하나를 다운로드하지 못할 경우 기본 위치에 0바이트 파일이 존재하므로 이 오류가 발생합니다.이 문제는 프록시 관련 문제에서 발생할 수 있습니다.손상된 파일이 있으면 업데이트 확인 프로세스는 모든 것이 최신이라고 생각하지만 그렇지 않습니다.

또한 webdriver-manager 프록시 설정은 npm과 다릅니다.webdriver-manager의 경우 업데이트를 수행하기 위한 구문은 다음과 같습니다.

sudo webdriver-manager update --proxy=http://<your proxy server>/

0바이트 파일을 지우고 이 update 명령을 다시 실행하면 파일이 올바른 데이터로 대체됩니다.이 파일들을 보관하는 기계상의 위치는 다음과 같습니다.

/usr/local/lib/node_modules/protractor/selenium

제 경우 chromedriver zip 파일이 손상되었기 때문입니다.

저는 이 문제를 해결하기 위해 다음과 같은 조치를 취했습니다.

  1. Chromedriver 다운로드 페이지에서 chromedriver zip 다운로드.

  2. "node_modules\protractor\selenium"에서 zip 파일을 압축 해제(즉, "chromedriver.exe"를 이 위치에 복사)

그리고 예상대로 작동하기 시작했습니다.이게 도움이 되길 바라.

Angular의 튜토리얼을 따를 때도 비슷한 문제가 발생했습니다.

https://docs.angularjs.org/tutorial/step_03

그에 따라 코드를 체크했습니다.

git checkout -f step-3

앵귤러 폰캣/패키지 내.json devDependencies, protractor 버전은 "~1.0.0"이며, 이로 인해 npm은 항상 손상된 파일을 다운로드합니다.

angular-phonecat/node_contractor/protractor/selenium/selenriver_2.10.zip

위의 zip 파일을 올바르게 열 수 없기 때문에 아래 오류가 존재합니다.

/Users/karli/dev/projects/angular-phonecat/node_modules/protractor/node_modules/adm-zip/zs:66 row Utils.Errors.INVALID_FORMAT; ^ 유효하지 않거나 지원되지 않는 zip 형식입니다.END 헤더를 찾을 수 없습니다.

2가지 솔루션이 있습니다.

  1. 대신 올바른 것을 링크하는 기호

ln -sf ~/dev/projects/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe

감사합니다 @bronson :-)

  1. protractor의 종속성 버전 업그레이드 여러 테스트 결과 최소 작동 가능한 버전은 1.1.0입니다.

angular phonecat / - angularjson

"devDependencies": {
    "karma": "^0.12.16",
    "karma-chrome-launcher": "^0.1.4",
    "karma-jasmine": "^0.1.5",
    "protractor": "~1.1.0",
    "http-server": "^0.6.1",
    "tmp": "0.0.23",
    "bower": "^1.3.1",
    "shelljs": "^0.2.6"
},

윈도우에서는 Mac에서 정상적으로 실행되는 프로젝트로 인해 문제가 있었습니다.마침내 나를 위해 그것을 완성한 명령은 다음과 같다.

node node_modules\protractor\bin\webdriver-manager update

Windows 의 경우는, 다음과 같이 설정할 필요가 있습니다.HTTP_PROXY환경 변수입니다.프록시 서버가 다음과 같은 경우를 가정하여 명령 프롬프트에서 다음 단계를 시도합니다.http://proxy.you.com:8080.

  1. SETX HTTP_PROXY http://proxy.you.com:8080 (SUCCESS가 반환됩니다.지정된 값이 저장되었습니다.시스템 속성에서도 이 작업을 수행할 수 있습니다.고급...환경 변수)
  2. 명령 프롬프트 창을 닫고 다시 여십시오(이렇게 하면환경 변수가 세션에서 사용됩니다).
  3. 이제 명령을 실행합니다.webdriver-manager update

mac osx 의 경우는, 패키지의 버전을 변경합니다."*"에 대한 익트랙터의 json을 지정하고 node_discloss를 제거한 후 다시 설치합니다.

독립 실행형 셀레늄 파일이 손상되어 덮어쓰고 폴더에 직접 복사해야 했습니다.

C:/Users/****/AppData/Roaming/npm/node_modules/protractor/selenium/

또한 chromedriver의 이름을 변경하여 chromedriver.exe가 아닌 chromedriver라고 부릅니다.

C:/Users/****/AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver

이 문제는 웹 드라이버에서 프록시를 설정하지 않았기 때문에 부분적으로 발생합니다.에 대한 솔루션은 승인된 답변에서 확인할 수 있습니다.

저 같은 경우에는npm install그리고.npm run update-webdriver명령어는 계속 손상된 명령어를 다운로드하고 있습니다.Chromedriver_x.xx.zip파일입니다.그래서 나는 도망가려고 했다.webdriver-manager update,그리고 그것은 성공하였다.

preprotractor: npm install chromedriver를 패키지에 추가합니다.json

그러면 항상 최신 버전이 다운로드 됩니다.

언급URL : https://stackoverflow.com/questions/22193692/protractor-selenium-could-not-find-chromedriver-at-on-windows