2015-06-22 61 views
1

我想在我的一個asp.net(mvc-> angular)項目上設置E2E測試。 我們使用團隊城市來完成我們的構建,因此我希望我的配置能夠在我的框和構建框上工作。設置量角器以自動打開和關閉硒

我卡試圖建立的值conf.js使量角器會自動啓動,當量角器需要它停止...

我通過這樣一個批處理文件運行它:

call npm install -g 
call C:\Users\brown.ericw\AppData\Roaming\npm\protractor conf.js 
pause 

當我手動運行硒時,一切正常。

但我只是無法弄清楚正確的conf.js讓硒自動啓動和關閉(停止在bat文件並不總是有效,儘管有幾種不同的方法)。

我試了很多不同的組合,但我很難過。

這裏是我的conf.js的相關部分:在我的項目文件夾我已經安裝量角器

exports.config = { 
    seleniumjar: '.\node_modules\protractor\selenium\selenium-server-standalone-2.45.0.jar', 

    //seleniumArgs: '-Dwebdriver.chrome.driver="\node_modules\protractor\selenium\chromedriver', 
    //chromeDriver: '.\node_modules\protractor\selenium\chromedriver', 
    //chromeDriver: '.\node_modules\protractor\bin\webdriver-manager', 
    chromeDriver: 'C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protractor\selenium\chromedriver', 
    //seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: [ 
     'e2eTests/*.js' 
    ], 

,所以我跑NPM安裝,所以我知道它的所有猶太在運行上開始構建/測試服務器。

這是我得到的錯誤。顯然我我不能找出設置讓得到它向駕駛員鉻指着...

D:\TFS\TACAdmin3G_Test_E2E>call C:\Users\brown.ericw\AppData\Roaming\npm\protra ctor conf.js [launcher] Process exited with error code 1 C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protractor\node_modules\q\ q.js:126 throw e; ^Error: Could not find chromedriver at D:\TFS\TACAdmin3G\node_modules\protractor\ selenium\chromedriver at LocalDriverProvider.addDefaultBinaryLocs_ (C:\Users\Brown.ericw\AppData\R oaming\npm\node_modules\protractor\lib\driverProviders\local.js:54:15) at LocalDriverProvider.setupEnv (C:\Users\Brown.ericw\AppData\Roaming\npm\no de_modules\protractor\lib\driverProviders\local.js:71:8) at Runner.run (C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protrac tor\lib\runner.js:265:31) at TaskRunner.run (C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\pro tractor\lib\taskRunner.js:123:19) at createNextTaskRunner (C:\Users\Brown.ericw\AppData\Roaming\npm\node_modul es\protractor\lib\launcher.js:220:20) at C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protractor\lib\laun cher.js:243:7 at _fulfilled (C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protrac tor\node_modules\q\q.js:797:54) at self.promiseDispatch.done (C:\Users\Brown.ericw\AppData\Roaming\npm\node_ modules\protractor\node_modules\q\q.js:826:30) at Promise.promise.promiseDispatch (C:\Users\Brown.ericw\AppData\Roaming\npm \node_modules\protractor\node_modules\q\q.js:759:13) at C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protractor\node_mod ules\q\q.js:573:44

我試圖改變,因爲的斜槓在路的空間在那裏,它改回正常路徑:

Error: Could not find chromedriver at D:\TFS\TACAdmin3G\_Test_E2E\.. 

不給我整個路徑。

chromedriver.exe位於conf.js中各種註釋版本的所有位置。但他們每個人都沒有喜樂。

我需要使用相對路徑,因爲我盒子上的根文件夾與構建服務器上的根文件夾不同。

任何幫助,非常感謝。

忘了說我看了這一個:Protractor does not find chromedriver: The driver executable does not exist: 而這一次

how to close selenium webdriver at end of test?

,沒能弄明白

+1

在哪裏錯誤? – nilesh

+0

對不起,複製它,但分心,並沒有'粘貼它,現在它,現在,謝謝! –

+1

您是否在本地服務器或構建服務器上收到此錯誤。記住團隊城市服務器上可能沒有安裝chrome – nilesh

回答

1

運行生成服務器上真正的瀏覽器可能不很好的解決方案。如果您有專門的Teamcity節點,那麼可以使用PhantomJS這樣的無頭瀏覽器實現。您需要確保PhantomJS安裝在您的專用節點上,並且其可執行文件放置在PATH的某處。另外請確保將瀏覽器名稱設置爲phantomjs而不是chrome。

其次,您可以設置一個Selenium網格,並設置您想要測試的不同瀏覽器的節點。從構建服務器,您可以在您選擇的瀏覽器上的遠程硒網格上運行測試。如果你想要走這條路線,有付費的第三方選擇,如醬汁實驗室或瀏覽器堆棧。

我傾向於去的第二個選項,因爲PhantomJS是不是一個真正的瀏覽器,你可能有等

+0

感謝您的信息,我將避免幻影,因爲一些「幻影/作品在瀏覽器上的失敗」問題..我喜歡堆棧方法! –

1

好每一個機構在不同瀏覽器/平臺上測試應用程序,對於那些誰遵循的要求,這裏是問題的答案以及爲什麼我認爲這是有效的。這個答案適用於VS中的node.js項目(也必須在這裏添加包),我的開發箱上的批處理文件和團隊城市。

我將NPM INSTALL添加到我的b enter code here uild腳本中,這樣一旦代碼被拉下,它立即將所有js包放入代碼目錄中。我添加了selenium服務器獨立包到我的項目(和package.json,所以我確切知道jar在哪裏,我將它添加爲--Save(寫入配置)和--Dev(添加在開發部分,即包括在node_models在我的代碼文件夾)

然後,我有這在我的conf.js

> exports.config = { 
>  seleniumServerJar: 'node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.45.0.jar', 
>  chromeDriver: './node_modules/protractor/selenium/chromedriver', 
>  //seleniumAddress: 'http://localhost:4444/wd/hub', 

有幾個微妙而重要的變化。

seleniumServerJar vs seleniumjar - 這裏有很多使用seleniumjar的例子...所以我猜標準標籤在某些時候發生了變化,但是seleniumServerJar就是文檔頁面上顯示的內容,它是有效的。

/VS \作爲路徑斜槓..這是一個把戲,因爲當我用反斜槓,它也沒有抱怨,唯一的區別是它截短的路徑與...在錯誤消息,但是當我深入挖掘時,反斜槓會從您輸入的路徑的一部分中刪除...甚至代碼使用的部分基於。\具有反斜槓...因此,只能在這些路徑中使用正斜槓標籤conf.js

與../node_modules VS相對尋路。\ node_modules VS node_modules ......,還有的例子在那裏有當我看到完整的路徑被生成時,我發現../並不是我想要的......所以我玩了它,並使它與一個./和一個無關......爲什麼他們都沒有以./我不知道工作..但它的作品。(我們對此深感抱歉)

萬一它可以幫助你,這裏是我的package.json

{ 
    "name": "_Test_e2e", 
    "version": "0.0.0", 
    "description": "_Test_e2e", 
    "main": "app.js", 
    "author": { 
    "name": "Brown.EricW", 
    "email": "" 
    }, 
    "devDependencies": { 
    "jasmine-reporters": "^1.0.0", 
    "protractor": ">=0.14.0-0 <1.0.0", 
    "selenium-server-standalone-jar": "^2.45.0" 
    }, 
    "scripts": { 
    "postinstall": "webdriver-manager update" 
    }, 
    "dependencies": { 
    "jasmine": "^2.3.1", 
    "jasmine-reporters": "^1.0.0", 
    "protractor": "^2.1.0" 

    } 
}