python_selenium的框架構建

設計思路
本文整理概括以往的工做中用到的東西,現彙總成基礎測試框架提供分享。html

框架採用python3 + selenium3 + PO + yaml + ddt + unittest等技術編寫成基礎測試框架,能適應平常測試工做須要。python

一、使用Page Object模式將頁面定位和業務操做分開,分離測試對象(元素對象)和測試腳本(用例腳本),一個頁面建一個對象類,提升用例的可維護性;web

二、使用yaml管理頁面控件元素數據和測試用例數據。例如元素ID等發生變化時,不須要去修改測試代碼,只須要在對應的頁面元素yaml文件中修改便可;瀏覽器

三、分模塊管理,互不影響,隨時組裝,即拿即用。
測試框架分層設計框架

把常見的操做和查找封裝成基礎類,無論是什麼產品,可直接拿來複用
業務層主要是封裝對象頁面類,一個頁面建一個類,業務層頁面繼承基礎層
用例層針對產品頁面功能進行構造摸擬執行測試
框架層提供基礎組件,支撐整個流程執行及功能擴展,給用例層提供各頁面的元素數據、用例測試數據,測試報告輸出等
測試框架目錄結構測試

以下思惟導圖目錄結構介紹:ui

編寫用例方法
login.yaml
例如,咱們要新增登陸功能測試用例:url

首先,只需在testyaml目錄下新增一個頁面對象yaml文件,參考login.yaml格式編寫便可。這些文件是提供給封裝頁面對象類調用並執行定位識別操做。設計

login_data.yaml
其次,在testdata目錄下新增一個login_data.yaml文件提供給登陸接口傳參的測試數據,編寫格式參考login_data.yaml文件。日誌

loginPage.py
而後,在page_obj目錄下新增一個loginPage.py文件,是用來封裝登陸頁面對象類,執行登陸測試流程操做。

login_sta.py
最後,在testcase目錄下建立測試用例文件login_sta.py,採用ddt數據驅動讀取yaml測試數據文件

綜上所述,編寫用例方法只須要按以上四個步驟建立->編寫便可。

執行以下主程序,可看輸出的實際結果。
common
包含:基本的公共方法類,好比HTML報告、Log處理、發送郵件、基本頁面對象等

其中pageObject裏面是對各個測試系統操做頁面的一個封裝,之後用例的方法直接繼承便可。可屢次調用,維護起來比較方便。

conf
基本的系統參數配置信息,能夠包含url,正確用戶的信息,簡單日誌級別,某些輸出位置,郵件信息等

data
對於數據驅動或者其餘測試用例中須要測試的數據,以後測試用例流程不變,能夠直接在文檔中進行Axitrader返傭https://www.kaifx.cn/broker/a...。暫時採用excel。也能夠採用csv,xml等等方法

log
日誌輸出,暫時包括了 log輸出,htmlreport輸出以及img的保存。

test
其中包含testcase以及testsuite兩個模塊

testcase 負責編寫測試用例若是某個功能有多個py文件編寫能夠再新建一個目錄。
testsuite 就是測試套件,能夠按需求進行選擇須要的測試項(包含測試用例以及測試類)
注意:使用ddt則不能夠再使用addTest方式單獨添加測試用例了。
(1)首先導入 webdriver 與 Keys 模塊。selenium.webdriver 模塊包含驅動瀏覽器的實現方法。 支持Firefox、Chrome、IE 瀏覽器。 Keys 模塊包含鍵盤中的鍵,諸如F1,ALT 等。
from selenium import webdriver
  from selenium.webdriver.common.keys import Keys
  (2)接下來,建立 Chrome WebDriver 實例。
driver = webdriver.Chrome()
  driver.get 方法會在瀏覽器中打開指定的 URL 頁面。 當頁面徹底加載後(會觸發 「onload」 事件),纔會把控制權交給咱們寫的測試腳本。
  注意: 若是若是加載的頁面,使用了不少 AJAX 請求,那麼 WebDriver 可能不知道徹底加載的時間點。
  (3)而後是一個斷言,測試網頁標題(即 H5 中的 <title> 標籤)中是否包含 「Python」 字符串: assert 'Python' in driver.title  (4) WebDriver 提供了多種查找元素的方法,形如 使用 find_element_by_*。 例如,這裏使用了 find_element_by_name 方法經過其標籤的 name 屬性,來查找輸入框元素 。

相關文章
相關標籤/搜索