一、什么是Selenium?
Selenium是一個基于瀏覽器的自動化測驗工具,它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案,Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid,
-
Selenium IDE:Firefox的一個擴展,它可以進行錄制回放,并把錄制的操作以多種語言(例如java、python等)的形式匯出成測驗用例,
-
Selenium WebDriver:提供Web自動化所需的API,主要用作瀏覽器控制、頁面元素選擇和除錯,不同的瀏覽器需要不同的WebDriver,
-
Selenium Grid:提供了在不同機器的不同瀏覽器上運行selenium測驗的能力,
本文將詳細介紹如何運用Python結合Selenium WebDriver庫搭建web自動化測驗框架,
二、自動化測驗框架
一個典型的自動化測驗框架一般包括用例管理模塊、自動化執行控制器、報表生成模塊和log模塊,這些模塊相輔相成,

接下來介紹各模塊的邏輯單元:
1、用例管理模塊
用例管理模塊包括新增、修改、洗掉等操作單元,這些單元又會涉及到用例書寫模式,測驗資料庫的管理、可復用庫等,
2、自動化控制器
控制器是自動化用例執行的組織模塊,主要是負責以什么方法執行我們的測驗用例.
3、報表生成模塊
主要負責執行用例后的生成報告,一般以HTML格式居多,資訊主要是用例執行情況,另外還可以配置發送郵件功能,
4、log模塊
主要用來記錄用例執行情況,以便于高效的調查用例失敗資訊以及追蹤用例執行情況,
三、自動化框架的設計和實作
1、需求分析
首先我們的測驗物件是一個web平臺,基于此平臺設計的框架要包含測驗用例管理、測驗執行控制器、測驗報告以及測驗日志的生成,
2、設計和實作
頁面管理
假設測驗web物件為一個典型單頁面應用,所以我們采用頁面模式,頁面模式是頁面與測驗用例之間的紐帶,它將每個頁面抽象成一個單獨的類,為測驗用例提供頁面元素的定位和操作,
BaseClass作為父類只包含driver成員變數,用來標識Selenium中的WebDriver,以便在子類中定位頁面元素,LoginClass和PageClass作為子類,可以提供頁面元素的定位和操作方法,比如登錄頁面,

從頁面看,需要操作的元素分別為:登錄用戶名、密碼、下次自動登錄和登錄按鈕,具體實作代碼如下:
頁面父類BaseClass.py

LoginClass繼承自BaseClass,并進行登錄的元素定位以及操作實作,代碼中定位了username和password,并添加了設定用戶名和密碼的操作,

公共庫模塊
公共庫模塊是為創建測驗用例服務的,主要包括常量、公共函式、日志、報告等,
Common.py

測驗用例資訊類用來標識測驗用例,并且包括執行用例、執行結果資訊,主要包括以下欄位,

日志主要用來記錄測驗用例執行步驟及產生的錯誤資訊,不同的資訊有不同的日志級別,比如Information、Warning、Critical和Debug,由于每個測驗用例產生的日志條目比較少,所以在測驗框架中只利用了最高級別的日志列印,即Debug級別,該級別也會將其他所有的日志級別的資訊同樣列印出來,在具體的實作中參考了Python標準庫中的logging類別庫,以便更方便的控制日志輸出,
測驗用例倉庫
用例倉庫主要用來組織自動化測驗用例,每條測驗用例都被抽象成一個獨立的類,并且均繼承自unittest.TestCase類, Python中的unittest庫提供了豐富的測驗框架支持,包括測驗用例的setUp和tearDown方法,在實作用例的程序中可以重寫,依托頁面管理和公共庫模塊實作的頁面方法和公共函式,每一個測驗用例腳本的書寫都會非常清晰簡潔,

從這個測驗用例中,我們可以看到
- Setup中定義了執行測驗用例前的一些實體化作業
- tearDown對執行完測驗做了清理和寫日志檔案作業
- 測驗步驟、測驗資料和測驗檢查點非常清晰,易修改(比如用戶名密碼)
- 日志級別僅有Debug,所以寫日志僅需用同一Log方法
3、用例執行模塊
執行模塊主要用來控制測驗用例腳本的批量執行,形成一個測驗集,用例的執行參考了Python標準庫中的subprocess來執行nosetests的shell命令,從而執行給定測驗用例集中的用例,測驗用例集是一個簡單的純文本檔案,實作程序中利用了.txt檔案testcases.txt,

用例前沒有“#“標記的測驗用例腳本會被執行,而有”#“標記的則會被忽略,這樣可以很方便的控制測驗集的執行,當然也可以創建不同的檔案來執行不同的測驗集,
四、需要改進的模塊
對于現有實作的測驗框架,已經可以滿足web物件的自動化需求,但還是有些可以改進提高的地方,比如:
- 部分用例可以嘗試資料驅動,
- 二次封裝selenium的By函式,以便更高效定位元素,
- 沒有進行持續化集成,
五、總結
基于Selenium實作的web自動化測驗框架不僅輕量級而且靈活,可以快速地開發自動化測驗用例,結合本篇的框架設計和一些好的實踐,希望對大家以后的web自動化框架的設計和實作有所幫助,
點贊關注~~加入我們,了解更多,642830685,免費領取最新軟體測驗大廠面試資料和Python自動化、介面、框架搭建學習資料!技術大牛解惑答疑,同行一起交流,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205075.html
標籤:其他
上一篇:Jmeter斷言-所有斷言講解
下一篇:干啥啥不行,吃飯第一名
