UI自動化測試框架(項目實戰)python、Selenium(日志、郵件、pageobject)


    其實百度UI自動化測試框架,會出來很多相關的信息,不過就沒有找到純項目的,無法拿來使用的;所以我最近就寫了一個簡單,不過可以拿來在真正項目中可以使用的測試框架。

    項目的地址:https://github.com/xiaoshitoutester/UItestframework

    這里完全是干貨,中間涉及到很多知識點,可以下載到本地然后,修改下項目地址,編寫測試用例就可以執行了,日志,報告什么的都有:

    這里日志打印是我新加的,在自動化測試中,經常出現各種奇怪的問題,導致不好定位問題,現在我將webdriver的各種操作都加了日志,對於我ui測試問題定位很有幫助,下面的是報告中、log文件中日志記錄截圖:

 

    接下來就是關於這個項目的介紹:

UItestframework項目目前具有以下功能:
1、對webdriver進行了第二次的簡單封裝,使用更加方便 public/common/pyselenium.py
(ps:這個是在蟲師的pyse基礎加了打印日志功能,參考:https://github.com/defnngj/pyse)
2、可以對excel表進行數據讀取,完成數據驅動:public/common/datainfo.py
3、具有打印日志的功能,打印在控制台和文件中:public/common/log.py,日志保存在report/log/目錄下
4、讀取配置文件(.ini文件):public/common/readconfig.py
5、具有發郵件的功能:public/common/sendmail.py
6、生成測試報告:html測試報告的路徑:report/testreport/目錄下
7、使用了PageObject模式來編寫測試腳本

整個項目的目錄結構:
├─config 配置文件的目錄
│ │ config.ini 存放配置文件
│ │ globalparam.py 重要的全局參數,如log、report的路徑配置等
│ │ __init__.py
│ │

├─data 測試數據
│ ├─formaldata # 正式環境測試數據
│ └─testdata # 測試環境的數據
│ searKey.xlsx

├─public 公共的文件庫
│ │ __init__.py
│ │
│ ├─common 封裝的公共方法
│ │ │ basepage.py
│ │ │ datainfo.py
│ │ │ log.py
│ │ │ mytest.py
│ │ │ publicfunction.py
│ │ │ pyselenium.py
│ │ │ pyselenium20161107.py
│ │ │ readconfig.py
│ │ │ sendmail.py
│ │ │ __init__.py
│ │ │
│ │
│ ├─pages 使用pageobject模式編寫測試腳本,存放page的目錄
│ │ │ baiduIndexPage.py
│ │ │ __init__.py

├─report 測試報告
│ ├─image 截圖目錄
│ ├─log 日志目錄
│ │ 2016-11-07.log
│ │
│ └─testreport html測試報告目錄
│ TestResult2016-11-07_16_15_51.html

└─testcase 存放測試用例
│ test_baidu.py

使用說明:
安裝響應的庫: pip install xlrd,selenium,configparser
1、在config.ini中配置項目路徑:project_path
2、測試數據放在data目錄下面
3、使用pageobject,寫page頁面,在測試用例里面調用放在public/pages目錄下
4、在testcase目錄下面,編寫測試用例,可以分模塊編寫,建相應的目錄
5、執行run.py,就可以執行所有的測試用例
6、在report/log里面查看日志
7、在report/testreport里面查看html測試報告

關於pyselenium的使用:
該py文件是根據蟲師的pyse改的,加了一個日志,根據自己的需要加了幾個函數
可以參考蟲師的pyse,github地址:https://github.com/defnngj/pyse
蟲師的博客園地址:https://github.com/defnngj/pyse

導入PySlenium文件
import PySelenium
1、啟動瀏覽器:
啟動谷歌瀏覽器
dr = PySelenium.PySelenium('chrom')
啟動遠程瀏覽器比如使用grid施行分布式執行
dr = PySelenium.PySelenium(RChrome','127.0.0.1:8080')
2、在地址欄輸入網址:
dr.open('http://www.baidu.com')
3、窗口最大化
dr.max_window()
4、設置瀏覽器的窗口的大小
dr.set_window(800,500)
5、不清除文本框的內容直接輸入值(比如說:進行文件上傳時,上傳文件的路徑,如果清除就會報錯):
dr.type('id->su','小石頭tester')
6、先清除文本框的內容,然后再輸入值(用得很多):
dr.clear_type('name->su','蟲師')
7、直接點擊元素
dr.click('css->#kw')
8、右鍵點擊元素:
dr.right_click('id->kw')
9、將鼠標移動到一個元素上
dr.move_to_element('clas->btn1.btn-green.btn-search')
10、雙擊元素
dr.double_click("id->kw")
11、將一個元素拖拽到另外一個元素上
dr.drag_and_drop('id->kw1','id->kw2')
12、根據連接的text來點擊(<a href="http://www.baidu.com">百度</a>)
dr.click_text('百度')
13、關閉窗口,driver
dr.quit()
14、執行js腳本
dr.js('script')
15、獲取元素的屬性
dr.get_attribute("id->su","href")
16、獲取元素的文本信息text
dr.get_text('id->su')
17、返回當前頁面的title
dr.get_title()
18、返回當前頁面的url
dr.get_url()
20、進入frame
dr.switch_to_frame('id->kw')
21、退出frame
dr.switch_to_frame_out()
22、判斷元素是否存在
dr.element_exist('id->kw')
23、截圖
dr.take_screenshot('file_path')
24、進入最新的table
dr.into_new_window()
25、輸入內容並且回車
dr.type_and_enter('id->kw')
26、使用js來點擊某個元素
dr.js_click('id->kw')
27、返回原生的webdriver,進行個性化需求
dr.origin_driver

     接到就到這里吧,其他功能以后會逐步添加,希望對項目的測試能帶來更高的效率;也希望給各位看官帶來幫助,也希望能得到大神指點,讓框架更加完善,健壯。。。


免責聲明!

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



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