一、創建測試項目
首先通過@vue/cli創建一個基於nightwatch的測試項目。(我這里使用的是@vue/cli 3.x的版本)
vue create your_project(你的項目名)
這里選擇項目所需的功能特性,空格鍵確定。
其他功能我這里隨便選擇一下,大家可按需勾選,但重點要勾選:E2E Testing。然后回車
第一個問題:是否使用路由的history模式?
第二個問題:選擇端到端測試解決方案。
這里我們選擇第二個:Nightwatch (Selenium-based)
第三個問題:將Babel, PostCSS, ESLint等配置放在哪里?
第四個問題:將此保存為未來項目的預設?
二、配置Nightwatch(以chrome為演示)
打開剛剛創建好的項目,首先測試下剛創建的項目能否直接進行e2e測試,在終端里輸入 package.json配置文件里設定的測試命令:npm run test:e2e。然后回車
直接報錯,這是因為vue-cli默認使用的nightwatch的0.9+的版本,其適用的chrome的版本很低,我們目前的瀏覽器都90+了,默認的還適用70+,所以我們這里不采用默認的。
在node_modules文件夾內找到nightwatch以及chromedriver的文件夾將其刪除(或使用命令行刪除),然后重新安裝
npm install nightwatch
npm install chromedriver
如果失敗報錯請使用cnpm,建議使用cnpm。
如果chromedriver安裝失敗,可使用如下命令:
cnpm install chromedriver --ignore-scripts
安裝成功后可看到nightwatch的版本為2+(
這里我們查看我們的chrome版本:
“幫助” -> “關於Google Chrome”
注:一定確保chrome是chromedriver所對應的版本,最好都是最新版本
我們再測試下是否可以進行e2e測試
結果還是報錯了,根據錯誤日志,我們查看node_modules/selenium-server/lib/runner路徑下的selenium-server-standalone-3.141.59.jar是否存在及正常。
結果顯示文件損壞,我們重新去下載對應版本
下載完成后將下載文件替換原有文件
再重新測試能否進行e2e測試
結果還是報錯了 ,再看錯誤日志,查看node_modules/_chromedriver@98.0.1@chromedriver/lib路徑下的chromedriver文件夾里的chromedriver.exe
結果發現該目錄下並無對應的chromedriver文件夾,所以我們去下載對應版本的chromedriver.exe
谷歌瀏覽器ChromeDriver下載地址:
找到與我們瀏覽器版本相一致的文件點擊下載(可通過notes.txt文件查看chromedriver所對應chrome版本),下載完成后將下載的壓縮包解壓改名后放在node_modules/_chromedriver@98.0.1@chromedriver/lib路徑下
完成后,再再再再一次重新測試能否進行e2e測試
最終在我們不懈努力下終於運行成功!!!