版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、內(nèi)容摘要自動(dòng)化測試簡介自動(dòng)化測試類型自動(dòng)化測試優(yōu)勢、劣勢自動(dòng)化測試適用范圍自動(dòng)化測試工具Selenium簡介自動(dòng)化測試框架第1頁,共46頁。自動(dòng)化測試簡介自動(dòng)化測試是使用自動(dòng)化測試工具或編寫代碼來替代手工測試的測試類型。自動(dòng)化測試只是輔助手工測試,并不能完全替代手工,自動(dòng)化更多的是去做驗(yàn)證型測試而非探索性測試,目的是將手工測試從重復(fù)的勞動(dòng)中脫離出來,節(jié)約時(shí)間、人力成本,并且在新增一個(gè)功能時(shí),可以對其相關(guān)所有功能做回歸測試,提高軟件的質(zhì)量。第2頁,共46頁。敏捷測試與自動(dòng)化測試為什么引入自動(dòng)化測試敏捷開發(fā)的最大特點(diǎn)是高速迭代,有周期性,并且能夠及時(shí)、持續(xù)的響應(yīng)客戶的頻繁反饋。伴隨著頻繁的迭代,測
2、試人員需要頻繁的重新進(jìn)行測試。在此由于系統(tǒng)是不穩(wěn)定的系統(tǒng),也造成了測試的不穩(wěn)定,我們不知道這次的故事是否會影響到系統(tǒng)的其他功能。在敏捷測試過程中,項(xiàng)目后期不會給予測試人員很多的集成測試時(shí)間,而且測試人員也無法在每次的迭代完成之后對之前的迭代進(jìn)行回歸測試,基于這一點(diǎn),就需要自動(dòng)化測試在每個(gè)迭代完成時(shí)對之前的迭代進(jìn)行集成測試第3頁,共46頁。自動(dòng)化測試類型UI自動(dòng)化性能自動(dòng)化接口自動(dòng)化單元測試自動(dòng)化第4頁,共46頁。自動(dòng)化測試優(yōu)勢、劣勢優(yōu)勢:節(jié)約人力,代碼維護(hù)好,可自動(dòng)執(zhí)行節(jié)約時(shí)間,測試腳本可在晚上進(jìn)行執(zhí)行回歸測試,提高軟件質(zhì)量代碼可復(fù)用第5頁,共46頁。自動(dòng)化測試優(yōu)勢、劣勢劣勢:代碼維護(hù)成本高,
3、對測試人員的要求高不易做探索性測試不適合頻繁需求變更的項(xiàng)目第6頁,共46頁。自動(dòng)化測試適用范圍需求變更不頻繁回歸測試測試人員有一定的編碼基礎(chǔ)產(chǎn)品型項(xiàng)目,項(xiàng)目周期長重復(fù)工作量大第7頁,共46頁。自動(dòng)化測試工具QTPselenium瀏覽器IE/FireFoxIE/FireFox/Chrome/Opera語言VBJava/python/ruby/C#等是否收費(fèi)有破解版,有部分插件是需要收費(fèi)的免費(fèi)開源是否容易上手容易有代碼基礎(chǔ)的容易是否存在GUI存在不存在是否支持錄制支持支持第8頁,共46頁。Selenium簡介Selenium是一款基于web應(yīng)用程序的開源測試工具。Selenium測試直接運(yùn)行在瀏覽
4、器中,就像真正的用戶在操作一樣。它支持Firefox、ie、Chrome等眾多瀏覽器。它同時(shí)支持JAVA、C#、Ruby、Python、PHP、Perl等眾多的主流語言。第9頁,共46頁。Selenium簡介Selenium Core:JavaScript FrameworkSelenium Core是Selenium的核心部分,它由一些純js代碼組成, 可以運(yùn)行在windows/linux的不同browser上,我們就是通過這些js代碼,才可以實(shí)現(xiàn)程序?qū)g覽器的控制。IDE:Firefox插件IDE是在core的基礎(chǔ)上的一種應(yīng)用, 通過UI實(shí)現(xiàn)類似QTP/Winner的腳本錄制回放功能;Se
5、lenium IDE是通過監(jiān)聽用戶對html頁面的操作來錄制腳本的,是真正能夠監(jiān)聽用戶對html頁面的操作的錄制工具第10頁,共46頁。Selenium簡介RC(Remote Control)Selenium RC模式,是客戶端利用各種編程語言,通過網(wǎng)絡(luò)向Selenium Server發(fā)送指令,Selenium Server接收到測試指令后,啟動(dòng)瀏覽器并向其發(fā)出JavaScript調(diào)用實(shí)現(xiàn)對Html頁面的全面追蹤,并通過網(wǎng)絡(luò)把執(zhí)行結(jié)果返回給調(diào)用者Selenium Server的實(shí)現(xiàn)原理是其打開瀏覽器時(shí),把自己的JavaScript文件嵌入網(wǎng)頁中。然后Selenium的網(wǎng)頁通過frame嵌入目標(biāo)
6、網(wǎng)頁。這樣,就可以使用Selenium的JavaScript對象來控制目標(biāo)網(wǎng)頁第11頁,共46頁。Selenium簡介WebDriverWebDriver啟動(dòng)目標(biāo)瀏覽器,并綁定到指定端口。該啟動(dòng)的瀏覽器實(shí)例,做webdriver的remoteserver。Client端通過CommandExcuter發(fā)送HTTPRequest給remoteserver的偵聽端口(通信協(xié)議:thewebriverwireprotocol)Remoteserver需要依賴原生的瀏覽器組件(如:IEDriver.dll,chromedriver.exe),來轉(zhuǎn)化轉(zhuǎn)化瀏覽器的native調(diào)用第12頁,共46頁。Sel
7、enium RC與Selenium WebdriverSelenium RCSelenium WebDriverSelenium RC的結(jié)構(gòu)復(fù)雜,因?yàn)榉?wù)器需要啟動(dòng)在開始試運(yùn)行前。webdriver架構(gòu)比Selenium RC簡單,因?yàn)樗刂浦鴱牟僮飨到y(tǒng)層面的瀏覽器。Selenium服務(wù)器充當(dāng)瀏覽器和Selenese的命令之間的中間人webdriver直接相互作用,以在瀏覽器和使用瀏覽器的引擎進(jìn)行控制。Selenium RC的腳本執(zhí)行速度較慢,因?yàn)樗褂昧薐avascript來與RC互動(dòng)webdriver的速度更快,因?yàn)樗苯咏换ナ褂玫臑g覽器。Selenium RC不能支持無頭,因?yàn)樗枰粋€(gè)
8、真正的瀏覽器一起工作webdriver可以支持無頭執(zhí)行它是一個(gè)簡單的API復(fù)雜,API相比,RC有點(diǎn)大不能測試移動(dòng)應(yīng)用程序可測試iPhone/Android應(yīng)用程序第13頁,共46頁。Selenium安裝(基于Python語言)下載并安裝Pythonpython-2.7.10.msi配置python環(huán)境變量環(huán)境變量:Path變量值:C:Python27下載setuptools【python基礎(chǔ)包工具】python easy_install.py安裝pippython setup.py install進(jìn)入C:Python27ScriptsEasy_install.exe pip第14頁,共46頁
9、。Selenium安裝(基于Python語言)安裝selenium進(jìn)入C:Python27Scripts,執(zhí)行pipinstall-Uselenium安裝java下載并安裝selenium服務(wù)端selenium-server-standalone-2.39.0.jar在selenium-server-standalone-2.39.0.jar目錄下執(zhí)行:java-jar selenium-server-standalone-2.39.0.jar安裝Chrome driver把chromedriver.exe放置到chrome安裝目錄下,并配置chromedriver.exe環(huán)境變量第15頁,共
10、46頁。瀏覽器操作設(shè)置最大化driver.maximize_window()設(shè)置瀏覽器大小driver.set_window_size(寬, 高)設(shè)置瀏覽器前進(jìn)后退driver.back()driver.forward()關(guān)閉瀏覽器driver.quit()打開瀏覽器driver.get(“”)第16頁,共46頁。瀏覽器操作第17頁,共46頁。對象定位對象的定位和操作是自動(dòng)化測試的核心部分,其中操作又是建立在定位的基礎(chǔ)上,因此對象的定位又顯得特別重要。對象的定位分為以下幾種:IdNameClass nameTag nameLink textXpath:部分瀏覽器會提供計(jì)算xpath的插件。(f
11、irefox、chrome)Css selector第18頁,共46頁。對象定位-單個(gè)元素定位Id定位:find_element_by_id()Name定位:find_element_by_name()Class name定位:find_element_by_class_name()tag name定位:find_element_by_tag_name()link text定位:find_element_by_link_text()find_element_by_partial_link_text()Xpath定位:find_element_by_xpath()css selector定位:f
12、ind_element_by_css_selector()第19頁,共46頁。對象定位-一組元素定位Id定位:find_elements_by_id()Name定位:find_elements_by_name()Class name定位:find_elements_by_class_name()tag name定位:find_elements_by_tag_name()link text定位:find_elements_by_link_text()find_elements_by_partial_link_text()Xpath定位:find_elements_by_xpath()css se
13、lector定位:find_elements_by_css_selector()第20頁,共46頁。對象定位對象的定位要依據(jù)idnamecssxpath的順序進(jìn)行定位id、name是最常用并且最容易的方式Css、xpath往往會與id、name配合使用Xpath是最脆弱的方式unitsServices componesui第21頁,共46頁。對象定位第22頁,共46頁。對象定位第23頁,共46頁。對象定位-id第24頁,共46頁。對象定位-name第25頁,共46頁。對象定位-xpath第26頁,共46頁。操作測試對象清除元素內(nèi)容Clear()模擬按鍵輸入Send_keys(“”)單擊元素Cl
14、ick()提交表單Submit()獲取大小Size獲取文本內(nèi)容Text獲取相關(guān)屬性值get_attribute(name)查看對象是否可見is_displayed()獲取對象屬性get_attribute()第27頁,共46頁。鼠標(biāo)事件右擊:context_click()雙擊:double_click()拖動(dòng):drag_and_drop(source,target)鼠標(biāo)懸停:move_to_element()按下鼠標(biāo)左鍵在一個(gè)元素上:click_and_hold()第28頁,共46頁。鍵盤事件send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)send_keys(
15、Keys.SPACE) 空格鍵(Space)send_keys(Keys.TAB) 制表鍵(Tab)send_keys(Keys.ESCAPE) 回退鍵(Esc)send_keys(Keys.ENTER) 回車鍵(Enter)send_keys(Keys.CONTROL,a) 全選(Ctrl+A)send_keys(Keys.CONTROL,c) 復(fù)制(Ctrl+C)send_keys(Keys.CONTROL,x) 剪切(Ctrl+X)send_keys(Keys.CONTROL,v) 粘貼(Ctrl+V)第29頁,共46頁。設(shè)置等待時(shí)間固定休眠時(shí)間Sleep(時(shí)間)超時(shí)等待,設(shè)置最長等待時(shí)
16、間implicitly_wait(時(shí)間)設(shè)置每隔一段時(shí)間內(nèi)檢測當(dāng)前頁面元素是否存在WebDriverWait(driver,時(shí)間).until( )WebDriverWait(driver,時(shí)間).until_not()第30頁,共46頁。層級定位元素有多層父元素,當(dāng)定位子元素時(shí)需要先定位父元素,然后定位到子元素。driver.find_element_by_id().find_element_by_link_text()界面中多個(gè)frame,多個(gè)frame處于父級子級關(guān)系,先找到父級的frame1,再找到子級的frame2.(可通過frame的id及name進(jìn)行定位)driver.switc
17、h_to_frame(“frame1)driver.switch_to_frame(frame2)第31頁,共46頁。窗口處理獲取當(dāng)前窗口current_window_handle獲取所有窗口window_handles切換窗口switch_to_window(待切換窗口)第32頁,共46頁。對話框處理定位對話框alert = driver.switch_to_alert()獲取對話框文本內(nèi)容alert.text()點(diǎn)擊對話框確認(rèn)按鈕alert.accept()點(diǎn)擊對話框取消按鈕alert.dismiss()第33頁,共46頁。下拉框處理test1test2test3test4test5tes
18、t6第34頁,共46頁。下拉框處理例子#-*-coding=utf-8from selenium import webdriverimport os,timedriver= webdriver.Chromefile_path = file:/ + os.path.abspath(test.html)driver.get(file_path)time.sleep(2)#先定位到下拉框m=driver.find_element_by_id(“optiontest)#再點(diǎn)擊下拉框下的選項(xiàng)m.find_element_by_xpath(/optionvalue=test2).click()time.s
19、leep(1)driver.quit()第35頁,共46頁。執(zhí)行js文件當(dāng)遇到WebDriver無法完成的操作時(shí),可以通過執(zhí)行js文件來完成。方法:execute_script(js)第36頁,共46頁。cookie處理獲取所有cookie信息get_cookies()獲取制定cookie信息get_cookies(name)添加cookie信息add_cookie(name,value)刪除特定cookiedelete_cookie(name)刪除所有cookiedelete_all_cookies()第37頁,共46頁。cookie處理獲取所有cookie信息get_cookies()獲取
20、制定cookie信息get_cookies(name)添加cookie信息add_cookie(name,value)刪除特定cookiedelete_cookie(name)刪除所有cookiedelete_all_cookies()第38頁,共46頁。驗(yàn)證碼處理去掉驗(yàn)證碼設(shè)置萬能驗(yàn)證碼Python圖片驗(yàn)證碼獲取(識別率不是百分之百)通過添加登錄cookie通過擋板第39頁,共46頁。斷言處理assert :驗(yàn)證失敗了,測試終止Verify:驗(yàn)證失敗了,其余測試案例繼續(xù)執(zhí)行Waitfor:待某一條件為True時(shí)測試案例執(zhí)行,待某一條件為false時(shí)測試案例失敗并暫停測試。第40頁,共46頁。
21、斷言處理assertLocation(判斷當(dāng)前是在正確的頁面)assertTitle(檢查當(dāng)前頁面的title是否正確)assertValue(檢查input的值, checkbox或radio,有值為”on”無為”off”)assertSelected(檢查select的下拉菜單中選中是否正確)assertSelectedOptions(檢查下拉菜單中的選項(xiàng)的是否正確)assertText(檢查指定元素的文本)assertTextPresent(檢查在當(dāng)前給用戶顯示的頁面上是否有出現(xiàn)指定的文本)assertTextNotPresent(檢查在當(dāng)前給用戶顯示的頁面上是否沒有出現(xiàn)指定的文本)as
22、sertAttribute(檢查當(dāng)前指定元素的屬性的值)assertTable(檢查table里的某個(gè)cell中的值)assertEditable(檢查指定的input是否可以編輯)assertNotEditable(檢查指定的input是否不可以編輯)assertAlert(檢查是否有產(chǎn)生帶指定message的alert對話框)waitForElementPresent (等待檢驗(yàn)?zāi)吃氐拇嬖凇檎鏁r(shí),則執(zhí)行。)第41頁,共46頁。自動(dòng)化測試框架為什么引入自動(dòng)化測試框架 有別于傳統(tǒng)的桌面應(yīng)用開發(fā),Web應(yīng)用因?yàn)槠涞芷诙?,需求變化快特殊性質(zhì),越來越多的Web開發(fā)團(tuán)隊(duì)在擁抱敏捷。同時(shí)隨著前端技術(shù)Javacript,Html5,等不斷被推出和完善,Web應(yīng)用也變得越來越復(fù)雜很絢麗。這都給我們的測試帶來了挑戰(zhàn)。第42頁,共46頁。自動(dòng)化測試框架為什么引入自動(dòng)化測試框架持續(xù)變化的需求復(fù)雜的UI往往一個(gè)測試團(tuán)隊(duì)需要應(yīng)付多個(gè)項(xiàng)目的測試工作非常有限的資源(人力,成本)跨平臺、跨瀏覽器第43頁,共46頁。自動(dòng)化測試框架為什么引入自動(dòng)化測試框架沒有框架的自動(dòng)化測試是找不到對象的,即使找到了也不會很幸福,就像沒有車沒有房很難找到對象是一樣的道理。第44頁,共46
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場員工晉升考核制度
- 企業(yè)員工培訓(xùn)與能力建設(shè)制度
- 2026年跨境營銷策劃公司跨境營銷人才培養(yǎng)與提升制度
- 2026年春季廣東中山市東區(qū)艷陽學(xué)校教師招聘筆試模擬試題及答案解析
- 酒員工培訓(xùn)管理制度
- 鐵路裝卸教育培訓(xùn)制度
- 培訓(xùn)學(xué)校用人制度
- 培訓(xùn)設(shè)備管理制度
- 培訓(xùn)學(xué)校備案制度
- 汽車維修企業(yè)培訓(xùn)制度
- GB.T19418-2003鋼的弧焊接頭 缺陷質(zhì)量分級指南
- 污水管網(wǎng)監(jiān)理規(guī)劃
- GB/T 35273-2020信息安全技術(shù)個(gè)人信息安全規(guī)范
- 2023年杭州臨平環(huán)境科技有限公司招聘筆試題庫及答案解析
- 《看圖猜成語》課件
- LF爐機(jī)械設(shè)備安裝施工方案
- 企業(yè)三級安全生產(chǎn)標(biāo)準(zhǔn)化評定表(新版)
- 耐壓測試儀點(diǎn)檢記錄表
- 梅州市梅江區(qū)村級資金財(cái)務(wù)管理制度(試行)
- GB∕T 37127-2018 混凝土結(jié)構(gòu)工程用錨固膠
- 胸腺瘤與重癥肌無力手術(shù)治療課件
評論
0/150
提交評論