UI
1.UI自動化測試概念:我們先明確什么是UI
UI,即(User Interface簡稱UI用戶界面)是系統和用戶之間進行交互和信息交換的媒介 UI自動化測試:
Web自動化測試和移動自動化測試都屬於UI自動化測試,UI自動化測試就是借助自動化工具對程序UI層進行自動化的測試
2.為什么對UI采用自動化測試?
從不同的階段或層次來說,自動化測試可以分為單元測試、接口測試、UI測試。如果一個產品從沒有做單元測試或接口測試,只做u房的自動化測試是不科學的,很難從本質保證產品的質量
如果妄圖實現全面的UI層的自動化測試更是勞民傷財,投入了大量人力時間結果卻不盡人意,因為越往上層,用例維護成本越高,尤其是UI層的元素經常改變的產品。
但不管什么樣的產品,最終呈現給用戶的是UI層測試人員必須在UI層投入大量的精九。所以。我們有必要通過自動化的方式幫助我們"部分解放"重復的勞動,在解放勞動力和維護成本之間找到一個平衡,自動化測試就會成為我們的一個利器。
3.什么項目適合做UI自動化測試?
1項目周期:首先是項目周期較長的產品,一般在一年半以上的產品
2.項目需求變動不頻繁:如果項目需求變動頻繁,在做自動化時會導致大量的腳本需要不斷的迭代維護,就失去了uI自動化解放勞動力的目的
3項目需要回歸測試:項目需要回歸測試,當測試一遍后,再次回歸是可以直接通過自動化腳本進行回測
4.UI自動化測試介入時機
項目需要在功能測試完畢后
5.UI自動化測試所屬分類
1.黑盒測試(功能測試)
2.白盒測試(單元測試)
3.灰盒測試(接口測試)
注意:UI自動化測試屬於黑盒測試(功能測試)
Web自動化測試框架介紹
主流的web自動化測試工具
1.QTP
QTP是一個商業化的功能測試工具,收費,支持web,桌面自動化測試。
2.Selenium(本階段學習)
Selenium是一個開源的web自動化測試工具,免費,主要做功能測試。
3.Robot framework
RobotFramework是一個基於Python可擴展地關鍵字驅動的測試自動化框架。(RF框架)
2.Selenium框架介紹及特點:
介紹:
Selenium是一個用於web應用程序的自動化測試工具
特點:
1,開源軟件:源代碼開放可以根據需要來增加工具的某些功能
2.跨平台:1inux.windows.mac
3.支持多種瀏覽器:FirefoxChrome、IE、EdgeOperaSafari等
4.支持多種語言:PythonJavaC #JavaSeript.Ruby、PHP等
5.成熟穩定:目前已經被qooqle、百度、騰訊等公司廣泛使用
6.功能強大:能夠實現類似商業工具的大部分功能,因為開源性,可實現定制化功能
Web自動化測試環境搭建
1.自動化測試環境搭建三要素: 1.python環境 2.selenium框架:pip install selenium 3.Chromedriver驅動:下載地址,注意版本的高度吻合. 4.Chrome瀏覽器
2.#selenium安裝與Chromedriver #下載安裝selenium: pip install selenium #chromedriver下載匹配: 下載地址:https://npm.taobao.org/mirrors/chromedriver/ 版本匹配:瀏覽器與驅動的版本需要對應,版本號的前三段需要嚴格對應,但最后一段可能找不到完全對應的版本號但需要盡量縮小差距范圍,查看瀏覽器版本:Chrome右上角三個點->幫助-->關於Google Chrome
#3.配置成功驗證 #將驅動放置在一個文件夾中,使用pyeharm打開文件央,配置好虛擬環境(python解釋器),#新建一個test的py文件 #編寫如下代碼: from selenium import webdriver browserw webdriver.Chrome(./chromedriver) #mac代碼 browser webdriver.chrome('./chromedriver.exe' ) #Windows代碼 browser.get"https://www.baidu.com/) #注意: #如果不想每次都寫./chromedriver,可以將chromedriver放到python的Seripts里 當你右鍵run一下test文件瀏覽器自動打開並在瀏覽器中打開了百度首頁,就算配置成功 python
2.元素定位(一)
在使用Selenium進行自動化測試的過程中經常需要定位到UI界面中的指定元素進行操作,比如點擊搜索按鈕,比如像輸入椎中輸入內容等等在Selenium中經常使用一下8大定位方法: Selenium的8定位元素方法: 1id:根據DOM節點的id屬性進行定位 name:根據DOM節點的name屬性進行定位 class name:根據DOM節點的class屬性進行定位
tagname:根據DOM節點的標簽名進行定位
linktext;根據超鏈接的文本定位 partial link text:根據超鏈接的部分文本定位
xPath:根據xpath定位
dss:根據css選擇器定位說明: Selenium框架定位元素的方法大致可以分為三類,一類是根據元素自身屬性與特點定位(前6個)。第二類是根據xpath這種HTML解析模塊實現的,第三類是根據css選擇器定位,起始css選擇器同樣是HTML解析器
from selenium import webdriver import time bowser = webdriver.Chrome('chromedriver.exe') bowser.get('file:///F:/jiango/zidonghua/pagetest/%E6%B3%A8%E5%86%8CA.html') time.sleep(3) #根據id # bowser.find_element_by_id('userA').send_keys('2597349742') # time.sleep(3)
#根據class屬性 # bowser.find_element_by_class_name('telA').send_keys('17535827976') # time.sleep(3)
#根據name # bowser.find_element_by_name('emailA').send_keys('123@qq.com') # time.sleep(3)
#根據標簽 # bowser.find_element_by_tag_name('input').send_keys('hellow') # time.sleep(3) #根據超鏈接部分文本 # bowser.find_element_by_partial_link_text('網站').click() # time.sleep(3) #根據超鏈接文本 # bowser.find_element_by_link_text("新浪").click() # time.sleep(3) bowser.quit()
idclassname,tagname定位
Selenium是以瀏覽器對象(browser ordriver)為基礎進行定位的,定位的方法 為:browser.find element by xxx,其中到底根據啥進行定位,是根據xxx來決定的,比如 browser.find element byid節點id屬性值)則是根據DOM節點的id進行定位的。 1.id:根據DOM節點的id屬性進行定位 browser.find element by idid屬性值 2.class name:根據DOR節點的class屬性進行定位 browser.find element by class name"class屬性值之一*)注意:如果節點class屬性有多個值,只需要寫其中一個即可定位到該節點 3 .name 相氓DOM節點的name屬性講行定位 browser.find element by name("name屬性值' python 4.tag name:根據DOM節點的標簽名進行定位 browser.find element by tag name(div")
link text與partail link text定位
link text;根據超鏈接的文本定位 browser.find element by link text('新聞) partiallink text:根據超鏈接的部分文本定位 browser.find element by link text新)