日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python自動(dòng)化測(cè)試框架搭建 - - PageObject+Unittest

系統(tǒng) 2015 0

先配圖看一下框架:

python自動(dòng)化測(cè)試框架搭建 - - PageObject+Unittest_第1張圖片
python自動(dòng)化測(cè)試框架搭建 - - PageObject+Unittest_第2張圖片
從上面兩張結(jié)構(gòu)圖,大概講講每個(gè)模塊下的類實(shí)現(xiàn)的一些方法:

1、config

||-config.yml 配置文件,主要存放一些全局配置變量,如:

(1)截圖、報(bào)告、驅(qū)動(dòng)存放路徑;

(2)發(fā)送郵件使用到的發(fā)件人郵箱及登錄密碼(因?yàn)榘l(fā)送郵件一般用于自動(dòng)發(fā)送測(cè)試報(bào)告,所以發(fā)件人比較固定);

(3)繞過(guò)登錄驗(yàn)證碼要寫(xiě)入的cookies信息

||-config.py 包含讀取配置文件方法和一些全局參數(shù)

2、data

||-存放一些數(shù)據(jù)文件

!!-generator 一個(gè)生成各類型隨機(jī)數(shù)據(jù)的類,里面包含生成隨機(jī)漢字、指定位數(shù)的數(shù)字、字符串的方法,可以減少造測(cè)試數(shù)據(jù)的工作量

3、driver

||-存放瀏覽器驅(qū)動(dòng)

4、log

||-logger.py 封裝的日志類,輸出不同級(jí)別的日志信息到指定的日志文件里

5、report

||-HTMLTestRunner.py 生成一個(gè)HTML格式的網(wǎng)頁(yè)報(bào)告

6、test

||-pageObject 存放各個(gè)頁(yè)面的元素、操作

||-test_suit 存放用例

7、utils

||-common 封裝常用方法

||——base_page 頁(yè)面基本操作(如前進(jìn)、后退、關(guān)閉、切換窗口、彈窗處理、元素定位、點(diǎn)擊、輸入、截圖等)

||-file_reader 封裝各種數(shù)據(jù)文件讀取方法,實(shí)現(xiàn)腳本參數(shù)化

||——csv_reader.py 讀取csv文件,支持逐行或逐列讀取數(shù)據(jù)

||——excel_reader.py 讀取excel文件

||——yaml_reader.py 讀取yml文件,配置文件讀取就是調(diào)用這個(gè)類中的get_data()方法

接下來(lái)主要講一下常用方法的封裝。其實(shí)封裝這些方法主要是為了完善各種日常操作的日志信息寫(xiě)入及異常處理。前進(jìn)。后退、關(guān)閉、點(diǎn)擊、輸入這些都沒(méi)什么特別的,主要就是調(diào)用driver的方法實(shí)現(xiàn),再加上日志信息寫(xiě)入和一些異常處理即可。

著重講一下切換窗口、日志信息寫(xiě)入、彈窗處理及元素定位三個(gè)方法

1、切換窗口:

分三種情況——當(dāng)前有1/2/>2個(gè)窗口

①只有一個(gè)窗口,無(wú)法切換

②有兩個(gè)窗口,直接切換到當(dāng)前窗口外的另一窗口

③有兩個(gè)以上窗口,遍歷每個(gè)窗口,直到切換到的窗口是目標(biāo)窗口(需要靠傳入?yún)?shù)判斷)為止

If len(driver.window_handles)==1:

#不做任何操作,輸入警告日志信息

elif len(driver.window_handles)==2:

driver.switch_to_window(‘另一窗口句柄’)

else:

For window in driver.window_handles:

            
               driver.switch_to_window(window)

 If 當(dāng)前窗口是目標(biāo)窗口:

   Break

            
          
  1. 日志信息寫(xiě)入:

在每一個(gè)封裝好的操作類里面,針對(duì)各種操作,寫(xiě)入對(duì)應(yīng)日志信息。例如用常用方法類來(lái)說(shuō)明

logger = Logger(‘BasePage’).get_logger()

If len(driver.window_handles)==1:

Logger.warning(“當(dāng)前只打開(kāi)了一個(gè)窗口,無(wú)法切換!”)

elif len(driver.window_handles)==2:

driver.switch_to_window(‘另一窗口句柄’)

Logger.info(‘切換到另一窗口’)

else:

For window in driver.window_handles:

            
               driver.switch_to_window(window)

 If 當(dāng)前窗口是目標(biāo)窗口:

   Break

            
          
  1. 彈窗處理(主要針對(duì)alert和confirm彈窗)

首先需要判斷彈窗是否出現(xiàn)?(使用EC.alert_is_present())

-Y 獲取彈窗提示信息,與傳入的預(yù)期提示信息比較,判斷信息是否正確?

-Y 點(diǎn)擊確認(rèn)按鈕,關(guān)閉彈窗

-N 寫(xiě)入錯(cuò)誤日志,提示信息有誤,并截圖,點(diǎn)擊確認(rèn)按鈕,關(guān)閉彈窗

-N 不需處理,寫(xiě)入日志,無(wú)彈窗

  1. 元素定位

這里主要是使用find_element()的方法,傳入?yún)?shù)格式為(By.方法,’表達(dá)式’)

使用find_element()方法需要導(dǎo)入By模塊(from selenium.webdriver.common.by import By)

方法可選值:id、xpath、link text、partial link text、name、tag name、class name、css selector
python自動(dòng)化測(cè)試框架搭建 - - PageObject+Unittest_第3張圖片
最后,稍微提一下這個(gè)框架里的PageObject思想

PageObject(頁(yè)面對(duì)象),簡(jiǎn)單點(diǎn)說(shuō)就是把界面定位和業(yè)務(wù)操作分開(kāi)。這個(gè)框架主要是把UI自動(dòng)化分為三層:對(duì)象庫(kù)層、操作層和業(yè)務(wù)層。

在pageObject文件夾下的各個(gè)page類,相當(dāng)于是對(duì)象庫(kù)層,主要存放各個(gè)頁(yè)面的元素
python自動(dòng)化測(cè)試框架搭建 - - PageObject+Unittest_第4張圖片
Base_Page類相當(dāng)于是操作層,再由各個(gè)page類繼承Base_Object類來(lái)實(shí)現(xiàn)頁(yè)面的一些基本操作。最后testcase中的各個(gè)用例類,類似業(yè)務(wù)層,并使用unittest框架組裝并批量執(zhí)行測(cè)試用例。

原文:https://blog.csdn.net/qq_22770715/article/details/78711848
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 石渠县| 阜宁县| 临高县| 长岛县| 商城县| 延长县| 滦平县| 麻江县| 峨边| 山阳县| 正阳县| 道真| 东城区| 汕头市| 崇阳县| 济阳县| 贵南县| 炎陵县| 松桃| 苍南县| 天全县| 额尔古纳市| 神池县| 忻城县| 仪陇县| 临沧市| 江油市| 五华县| 登封市| 蓝田县| 陆良县| 城口县| 霍邱县| 西丰县| 尚义县| 时尚| 小金县| 邢台县| 屯昌县| 惠安县| 壶关县|