2014-03-05 34 views
37

我安裝量角器以下this tutorial,當我使用webdriver的經理更新它說:量角器/硒「在找不到chromedriver」(在Windows上)

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,看到它試圖從.. \ node_modules \量角器\硒\ chromedriver但ONL加載chromedriver y是一個空的zip文件,名爲chromedriver_2.9

所以我手動下載了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 

任何人任何想法?

+0

我嘗試下載chromedriver並把它給.. \ node_modules \量角器\硒\ chromedriver.exe直接和它產生了新的錯誤 –

回答

24

如果您是使用代理,然後嘗試第一次設置代理,然後運行更新的webdriver:

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

webdriver-manager update 
+3

刪除0字節的文件從/硒文件夾第一個 –

+0

謝謝。這就是爲什麼webdriver-manager更新不起作用。 –

+0

你也應該設置代理的webdriver的經理人所描述[這裏](https://github.com/angular/protractor/pull/537) – Renaud

0

獨立的硒文件已損壞,所以我不得不覆蓋它,直接複製到文件夾中。

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

此外,我不得不重新命名chromedriver所以它實際上是所謂的「chromedriver」,而不是「chromedriver.exe」。

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

這部分發生是因爲我沒有在webdriver中設置代理。您可以在the accepted answer中查看此解決方案。

22

我跟着該教程,並有同樣的問題。這裏的問題是你需要在你的量角器配置文件中指定你的硒jar和chrome驅動exe文件的路徑。我的是全球範圍內安裝了應用程序數據文件夾,所以這是我的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/' 

}; 

這似乎這樣的伎倆。

+0

另外需要注意的,我通過咕嚕運行量角器,它使用端口9000上的連接任務運行。因此,我在配置中指定了9000。 –

+0

chromeDriver: 'C:/用戶/ /AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver.exe',這部分並不是爲我。我以前在全局安裝過(npm install -g量角器),我無法從特定目錄運行吞吐任務。謝謝切斯特。 – VSO

+0

在與團隊合作時添加絕對路徑有點冒險。對於我來說,@ stitakis(運行webdriver-manager更新)的答案確實有效。 – Micros

7

東張西望了一會兒後,我注意到,包括package.json文件中the angular phonecat repo定義update-webdriver任務。

運行該任務(使用npm run update-webdriver)爲我修復了量角器。

4

Chrome驅動程序可以存在於任何位置,但如果通過「webdriver-manager」安裝它,量角器運行程序似乎希望它位於它將存在的位置。因此,可以用 「NPM安裝chromedriver」,這將其放置在不同的位置進行安裝,如: 的/ usr /本地/ LIB/node_modules/chromedriver/LIB/chromedriver/chromedriver

在這種情況下,配置文件將需要設置在這個位置看,但有一個簡單的解決方案... ...

如果webdriver的經理無法下載要麼chromedriver或硒的獨立,會出現在默認位置0字節的文件,這將導致此錯誤。不幸的是,這可能會發生與代理相關的問題。一旦損壞的文件存在,更新檢查過程認爲所有內容都是最新的,但事實並非如此。

此外,webdriver-manager的代理配置與npm不同。對於webdriver的經理,語法做一個更新將是:

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

清除出0字節文件並重新運行該更新命令應與正確的數據替換文件。這些文件在我的機器上的位置是:

/usr/local/lib/node_modules/protractor/selenium 
+0

用量角器開始1.0.x的默認NPM環境設置使用 – Max

13

哎呀,這麼多答案...

在Mac上,這個工作對我來說:

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

我們有了一個可以更好的方法來解決它,但至少這讓我繼續前進。

+1

添加這的package.json將允許'NPM install'來照顧它:'「安裝後」:「回聲-n $ NODE_ENV | grep的-v「生產「&& ./node_modules/protractor/bin/webdriver-manager更新||回聲‘將不會運行的webdriver生產安裝或更新只有’」' – pulkitsinghal

+0

當我下載的zip文件總是損壞。我不在代理之後,所以我不確定問題。但我能得到它在此過程中,雖然運行工作「故宮運行量角器」下載chromedriver,並將可執行的node_modules/chromedriver/lib中/ chromedriver /,所以我就掛在那裏,而不是bin /目錄。當我做npm安裝chromedriver時,只需在bin /目錄中放置一個398字節的存根。 – bmacnaughton

1

如果在Windows上,您可能需要設置一個HTTP_PROXY環境變量。在您的命令提示符下嘗試這些步驟,假設您的代理服務器是http://proxy.you.com:8080

  1. SETX HTTP_PROXY http://proxy.you.com:8080(它應該返回成功:指定的值保存您也可以做到這一點在系統屬性... ...高級環境變量。)
  2. 關閉命令提示符窗口,然後重新打開。 (這確保了新的環境變量將在會話中使用。)
  3. 現在運行你的命令:webdriver-manager update
+0

代理已經使用@CleverCoder給出的答案中定義的'--proxy = http:// <您的代理服務器> /'參數來定義。謝謝你。 –

2

對我來說,這是由於損壞chromedriver zip文件。

我做下面的事情來解決這個問題。

  1. 下載chromedriver拉鍊從ChromeDriver Download Page

  2. 提取出在zip文件 「node_modules \量角器\硒\」(即複製 「chromedriver.exe」 到該位置)

然後它開始按預期工作。希望這會幫助你。

1

在Mac OSX上,改變的package.json版本的量角器 「*」,刪除node_modules,並重新安裝。

0

對我而言,npm installnpm run update-webdriver命令只是不斷下載損壞的Chromedriver_x.xx.zip文件。所以,我試圖運行webdriver-manager update,和它的工作。

59

我面臨這個錯誤也和我閱讀教程的時候,它並沒有涉及如何安裝量角器和webdriver的地方依賴於您的項目(位於英寸/ node_modules)。

如果這是你喜歡什麼(可能是因爲你可能想使用咕嚕,量角器亞軍,後來在一個持續構建的方式運行測試,因爲我neede),而不是在全球安裝它,該解決方案爲我工作:

  1. 安裝量角器:

npm install protractor --save-dev

  • 通過運行安裝硒和與所述的webdriver的管理程序的webdrivers:
  • ./node_modules/protractor/bin/webdriver-manager update

    調用此命令後看看./node_modules/protractor和它的子文件夾,以驗證它。應該有一個名爲selenium的文件夾,其中chromedriver位於其中。

    請注意,作爲量角器沒有安裝爲「全局」,從命令行調用它將導致「找不到commnad」錯誤。 Additionaly ./node_modules/protractor/bin/protractor

    ,它可能是一個腳本定義添加到您的package.json一個好主意,那接下來的時間,讓你從零安裝所有的依賴關係,NPM設置的: 你可以代替這個命令來運行它webdrivers automaticaly。對於添加到您的package.json文件: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

    希望這有助於進一步您...

    +1

    這個答案實際上是以一種理智的方式解決了這個問題。謝謝! –

    +0

    適用於Windows 8.1 Enterprise。非常感謝! –

    +0

    幹得好。最佳答案 – grant

    -3

    只需添加 「preprotractor」: 「故宮安裝chromedriver」 你的package.json

    這會一直下載最新的一個。

    3

    我遇到了類似的問題,當我跟着角的教程:

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

    ,並相應地簽出代碼:

    git checkout -f step-3 
    

    在角phonecat /的package.json devDependencies,量角器版本是「〜1.0.0」,這導致npm總是下載一個損壞的文件:

    angular-phonecat/node_modules/protr演員/硒/ chromedriver_2.10.zip

    由於上述zip文件不能正常開啓,所以下面的錯誤存在:

    /用戶/ karlli的/ dev /項目/角phonecat/node_modules /量角器/node_modules/adm-zip/zipFile.js:66 throw Utils.Errors.INVALID_FORMAT; ^ 郵政編碼格式無效或不受支持。沒有END標頭中找到

    有2級的解決方案:

    1. 符號鏈接正確的,而不是

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

    由於@bronson :-)

  • 升級量角器的依賴版本 經過多次試驗,I F最小可行版本是1.1.0。
  • 角phonecat /的package.json

    "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" 
    }, 
    
    0

    在Windows上,我在與我的Mac上運行良好的一個項目的麻煩。終於得到了它爲我做的命令是:

    node node_modules\protractor\bin\webdriver-manager update