1. 程式人生 > >selenium+java+testNG+pageObject深入理解自動化測試框架

selenium+java+testNG+pageObject深入理解自動化測試框架

關於selenium+java+testNg的環境配置文章,本文主要講述測試框架的架構實現。

我們知道,搭建一個合理的測試框架能夠將自動化測試做大做大,一個合適的自動化測試框架能夠極大的降低程式碼的數量,便於後續的維護。文章先從測試框架的模型,思想講起,然後將各個部分做實現。

一、框架包結構如下圖

以下依次分析下每個包中的工作
  • com.bfm.pageElements:yaml檔案存放頁面要素對應的xpath;
  • com.bfm.properties:yaml檔案儲存相關的公共要素,比如iframe,url;
  • com.bfm.VO:class類編寫頁面物件,比如LoginPageVO;
  • com.bfm.task:class編寫每個頁面中需要的動作;比如loginTask();
  • com.bfm.utils:class編寫相關的工具包;
  • com.bfm.tests:class編寫相關的測試類;比如loginSucessTest();
  • com.bfm.suites:class編寫測試呼叫類;

二、該框架中使用的主要思想

該測試結構中,主要使用的思想有,pageObject面向介面做處理、使用反射機制對介面資料進行傳遞、使用yaml檔案管理介面要素的定位、使用分層機制程式設計。 首先分析一下該框架中的主要類,類結構如下。
依次分析下各個類的作用
  • loginPageElements.yaml:存放的登入介面所需要的主要要素,以後介面做調整後,只需要調整對應要素的查詢方式,比如,userName對應的name;
  • url.yaml:存放相關的訪問地址,比如,登入介面的地址,登入地址調整後,只需要調整該訪問地址即可;
  • iframes.yaml:存放iframes的地址,對應操作介面的iframe調整後,調整該檔案中的配件即可;
  • yamlFileDirector:相關靜態變數,存放相關yaml檔案存放的物理路徑,以上配置檔案的路徑調整後,修改該檔案的路徑配置即可;
  • WebDriverConstruction:更加傳遞的瀏覽器型別,初始化相應的瀏覽器即可;包含fireFox,chrome等;
  • pageElementSearch:查詢對應yaml檔案在介面中的要素;
  • TreeNodeSearch:用於導航視窗的處理;
  • SwitchToWindow:用於切換iframes;
  • XmlToJavaVO:轉換xml資料到介面VO物件中,介面資料的傳遞,使用反射機制,處理不同的介面VO;
  • XMLReader:讀取xml檔案的類;
  • YamlReader:讀取yaml檔案的類;
  • ElementOperator:靜態類,包含介面要素需要處理的方法,比如處理,文字框的清空,下拉框的操作等;
  • LoginTask:實現登入介面中的功能;比如:登入,重置等;
  • loginPageTest:測試類,實現登入成功,登入失敗等;
  • loginTestSuite:呼叫不同的測試類一起執行;

三、框架中的層次結構

下面講述一下該框架的層級結構
  • 測試資料層:獨立封裝資料;
  • 頁面物件層:封裝頁面物件,共頁面任務層做呼叫;
  • 頁面任務層:實現各個獨立頁面的操作;
  • 測試層:實現頁面測試;
  • 測試元件層:實現測試層的管理呼叫;

到這裡就介紹完了我實現的web測試主要思想,後續應該會做進一步的優化。歡迎大家吐槽。框架程式碼:http://download.csdn.net/detail/boer521314/9396376

介面自動化框架:https://github.com/laiqb/AutoUI

相關配置檔案:以yaml檔案形式儲存介面要素,便於以後統一管理介面要素,介面要素的調整,只需要調整對應頁面的yaml檔案即可。轉載一篇關於yaml檔案處理的文章:selenium+java自動化測試框架之元素管理篇(yaml)