#學習筆記#e2e學習使用(一)


本文僅限於記錄本人學習的過程,以及怎么踩的坑,是如何解決的。邏輯肯定是混亂的,有用之處會抽出共通另行發帖。

 

最終目標:要運用於Vue項目中,進行功能測試甚至自動化測試。

 

一、e2e概念

  • 理解:end to end,端到端,前端到后端整個過程的測試(也叫功能測試/連接測試)。

      主要是測業務,絕大部分情況是指在瀏覽器上對某個網站進行某個的操作,比如:登錄。

      模擬用戶操作。

  • 特征:e2e是由Nightwatch + Selenium 搭建的(未做深入考究別認真)測試環境。

      把整個系統當作一個黑盒;

      測試人員模擬真實用戶在瀏覽器中操作UI;

      測試出的問題可能是前端也可能是后端導致的。

     -- Nightwatch 是一款 Test Runner,可以簡單理解為Selenium 的控制軟件,它將提供一系列接口供我們編寫測試案例,同時也是與現有前端項目結合的橋梁;

     -- Selenium 是一款 Web 的自動化測試環境,它將幫我們搭建好測試環境,調取系統安裝的瀏覽器,在瀏覽器里執行一切自動化行為。

  • 運行過程:

    1.  測試編寫測試腳本

    2.  runner.js 引入依賴、瀏覽器內核並運行腳本

    3.  nightwatch.js 在后台打開一個 java 進程,用於操作瀏覽器

    4.  java 進程收到腳本的指令

    5.  java 進程操作瀏覽器

  •  流程一覽:

      1.  檢查環境(node.js、vue-cli、【webpack】、jdk、)

      2.  使用 Vue + Webpack 構建vue項目:#vue init webpack vue-project ,選擇e2e、nightWatch

      3.  npm run e2e

      4.  編寫測試代碼,測試用例,運行測試

      5. 結果分析

  • 為什么需要jdk? 

    運行過程中,java進程需要jdk支持

 

二、項目搭建

 0、安裝jdk【點擊進入

  查看默認安裝的openJDK:#rpm -qa | grep openjdk

 

  1、創建Git知識庫,克隆到本地

  #git clone https://github.com/MrLittlepirate/vue-e2eDemo.git

  

 

 2、進入項目根目錄,搭建vue項目

 #vue init webpack vue-e2eDemo

 

 

  3、first cmmit

 還不會git命令直接提交,采用在VSCode中提交。

 pull (拉取) --> commit all(提交全部) --> push (推送)

 

   4、 npm run e2e

  終端,轉到項目根目錄,運行命令

 # npm run e2e 

   報錯:

      Error: Cannot find module 'chromedrive'

  

  

  

 原因:

     沒有安裝chrome驅動

   解決:

     解決chorm驅動問題:    

   #npm install chromedriver  

    仍然報錯:

  ChromeDriver installation failed Error with http(s) request: Error: connect ETIMEDOUT 172.217.160.112:443  

  可能是不能翻(F)牆(Q)的問題???【百度出來的額】

 換命令: 

  #cnpm install chromedriver

  

   再次運行npm run e2e,報錯如下:

       Error retrieving a new session from the selenium server

       Connection refused! Is selenium server started?

  

   此時我認為錯誤原因是:虛擬機中 centos7 沒有安裝Chrome瀏覽器導致的。目前只有自帶的firefox,且還不打算下載Chrome,所以決定把瀏覽器的連接修改為firefox:

   配置文件: /test/e2e/runner.js

 if (opts.indexOf('--env') === -1) { // opts = opts.concat(['--env', 'chrome']) 原來的注釋掉
    opts = opts.concat(['--env', 'firefox']) }

   再次npm run e2e,報錯如下:

  

  仔細檢查了一下/test/e2e/runner.js配置文件,發現之前修改Chrome時還有一處需要改動【其實完全沒有必要】:

 selenium: { start_process: true, server_path: require('selenium-server').path, host: '127.0.0.1', port: 4444, // cli_args: { 原來的注釋掉
    // 'webdriver.chrome.driver': require('chromedriver').path
    // } },

   由於 selenium 打開火狐瀏覽器不需要驅動(只需要正確安裝即可正常啟動),故而不需要install 火狐driver。

   運行仍報相同的錯。嗯,沒辦法了,只能先把 jdk 安裝一波了。

 

2、安裝JDK1.8 Linux64bit【點進進入“正經”的安裝過程

// =====  如果你不是我本人,完全沒必要看這部分 =========

(1) Oracle 官網下載時,需要登錄賬號接收協議(我是沒有跳過賬號一這步),忙活了一陣子,去搜了免費分享的JDK,感謝大佬。

JDK8下載|JDK1.8下載可選擇window版和linux版

(2) 綜合這兩個教程安裝的:

 Centos7 JDK8的安裝配置 :解壓縮 && 配置環境變量JAVA_HOME

 在Centos下用alternative命令切換各個版本的jdk的方法 :可以不卸載Linux自帶的OpenJDK,只切換你當前要用的版本就行。

 

正確操作步驟:

  【在opt目錄下解壓縮 --> 配置JAVA_HOME環境變量 --> 用alternatives命令:登記個新的jdk在 alternatives 里面 --> alternatives --config java 切換要用的JDK】

 

實際操作步驟截圖(順序其實有誤的,無知踩坑,最終ok):

step1:拷貝JDK壓縮包到 /usr/java 

 

Step2:用alternatives命令

Step3:切換JDK

 

step4:查看java版本

【巨坑:都還沒有解壓縮安裝,怎么可能會有此命令哼哼!】

 

step5:配置JAVA_HOME環境變量:

在/etc/profile 文件末尾新增以下內容:

#JDK1.8 export JAVA_HOME=/opt/jdk1.8.0_11 export JAVA_BIN=/opt/jdk1.8.0_11/bin  
export PATH=$PATH:$JAVA_HOME/bin  
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH

step6:輸入重啟命令:reboot 

step7:重啟后打開終端輸入 java -version查看,仍然報【bash java:未找到命令....】的錯誤。

step8:解壓縮安裝JDK1.8【應該在最開始就做這個操作】

step9:將解壓縮后的文件夾【jdk1.8.0_11】移動到  /opt 目錄下

  —— 因為之前配置的JAVA_HOME路徑是  /opt/jdk1.8.0_11

 

step10: java -version

終於OK了,被蠢到了,無語凝噎。

注:如果還是不對,就把之前的alternative命令再執行一遍。

 

3、再次運行e2e:

#npm run e2e

 

4、無限多的坑:

無用功1:之后我又下載了selenium-server-sandalone-3.8.1.jar   和  selenium-html-runner-3.8.1.jar,用java -jar selenium-server-sandalone-3.8.1.jar 命令安裝。install --save-dev selenium    install --save-dev selenium-standalone  等命令沒用。

無用功2:更新firefox

無用功3:修改配置文件

  

5、最終:

  • 下載安裝Chrome瀏覽器:Centos7 yum安裝chrome瀏覽器
  •  重新建了一個vue項目【vue install webpack my-project】,沒有修改任何配置文件,創建的時候 chromedriver 安裝失敗了,所以需要單獨install:
#npm install chromedriver  

          在下一步運行e2e之前,我還用了這兩個命令,雖然不知道有沒有什么用:

#npm install selenium-service
#npm install nightwatch
  • 運行e2e:
#npm run e2e

  報錯:Error:socket hang up 

       

    大致意思就是selenium還是沒有成功啟動瀏覽器,最后一句應該是斷開/掛起了。

  解決:

    換一個賬號(非root權限)登錄,這下npm run e2e就行了!!

      

   我用的虛擬機,習慣不好一直用的root賬號,這下撞牆了—— Chrome默認不能以root身份運行 Google Chrome瀏覽器,請以普通用戶身份啟動“Google Chrome瀏覽器“。

   有關如何允許 root 啟動 Google Chrome瀏覽器,請點擊“設置root啟動Chrome”。

 

6、編寫測試代碼、測試用例

見#學習筆記#e2e學習使用(二)

  

資料:

1、怎么為大中型的vue.js項目編寫e2e測試?

2、前端自動化測試是干嘛的?

3、搭建自己的前端自動化測試腳手架(一)

4、Centos7 JDK8的安裝配置 

5、使用nightwatch進行E2E測試中文教程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM