版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)容摘要自動(dòng)化測(cè)試簡(jiǎn)介自動(dòng)化測(cè)試類型自動(dòng)化測(cè)試優(yōu)勢(shì)、劣勢(shì)自動(dòng)化測(cè)試適用范圍自動(dòng)化測(cè)試工具Selenium簡(jiǎn)介自動(dòng)化測(cè)試框架第1頁(yè),共46頁(yè)。自動(dòng)化測(cè)試簡(jiǎn)介自動(dòng)化測(cè)試是使用自動(dòng)化測(cè)試工具或編寫代碼來(lái)替代手工測(cè)試的測(cè)試類型。自動(dòng)化測(cè)試只是輔助手工測(cè)試,并不能完全替代手工,自動(dòng)化更多的是去做驗(yàn)證型測(cè)試而非探索性測(cè)試,目的是將手工測(cè)試從重復(fù)的勞動(dòng)中脫離出來(lái),節(jié)約時(shí)間、人力成本,并且在新增一個(gè)功能時(shí),可以對(duì)其相關(guān)所有功能做回歸測(cè)試,提高軟件的質(zhì)量。第2頁(yè),共46頁(yè)。敏捷測(cè)試與自動(dòng)化測(cè)試為什么引入自動(dòng)化測(cè)試敏捷開發(fā)的最大特點(diǎn)是高速迭代,有周期性,并且能夠及時(shí)、持續(xù)的響應(yīng)客戶的頻繁反饋。伴隨著頻繁的迭代,測(cè)
2、試人員需要頻繁的重新進(jìn)行測(cè)試。在此由于系統(tǒng)是不穩(wěn)定的系統(tǒng),也造成了測(cè)試的不穩(wěn)定,我們不知道這次的故事是否會(huì)影響到系統(tǒng)的其他功能。在敏捷測(cè)試過(guò)程中,項(xiàng)目后期不會(huì)給予測(cè)試人員很多的集成測(cè)試時(shí)間,而且測(cè)試人員也無(wú)法在每次的迭代完成之后對(duì)之前的迭代進(jìn)行回歸測(cè)試,基于這一點(diǎn),就需要自動(dòng)化測(cè)試在每個(gè)迭代完成時(shí)對(duì)之前的迭代進(jìn)行集成測(cè)試第3頁(yè),共46頁(yè)。自動(dòng)化測(cè)試類型UI自動(dòng)化性能自動(dòng)化接口自動(dòng)化單元測(cè)試自動(dòng)化第4頁(yè),共46頁(yè)。自動(dòng)化測(cè)試優(yōu)勢(shì)、劣勢(shì)優(yōu)勢(shì):節(jié)約人力,代碼維護(hù)好,可自動(dòng)執(zhí)行節(jié)約時(shí)間,測(cè)試腳本可在晚上進(jìn)行執(zhí)行回歸測(cè)試,提高軟件質(zhì)量代碼可復(fù)用第5頁(yè),共46頁(yè)。自動(dòng)化測(cè)試優(yōu)勢(shì)、劣勢(shì)劣勢(shì):代碼維護(hù)成本高,
3、對(duì)測(cè)試人員的要求高不易做探索性測(cè)試不適合頻繁需求變更的項(xiàng)目第6頁(yè),共46頁(yè)。自動(dòng)化測(cè)試適用范圍需求變更不頻繁回歸測(cè)試測(cè)試人員有一定的編碼基礎(chǔ)產(chǎn)品型項(xiàng)目,項(xiàng)目周期長(zhǎng)重復(fù)工作量大第7頁(yè),共46頁(yè)。自動(dòng)化測(cè)試工具QTPselenium瀏覽器IE/FireFoxIE/FireFox/Chrome/Opera語(yǔ)言VBJava/python/ruby/C#等是否收費(fèi)有破解版,有部分插件是需要收費(fèi)的免費(fèi)開源是否容易上手容易有代碼基礎(chǔ)的容易是否存在GUI存在不存在是否支持錄制支持支持第8頁(yè),共46頁(yè)。Selenium簡(jiǎn)介Selenium是一款基于web應(yīng)用程序的開源測(cè)試工具。Selenium測(cè)試直接運(yùn)行在瀏覽
4、器中,就像真正的用戶在操作一樣。它支持Firefox、ie、Chrome等眾多瀏覽器。它同時(shí)支持JAVA、C#、Ruby、Python、PHP、Perl等眾多的主流語(yǔ)言。第9頁(yè),共46頁(yè)。Selenium簡(jiǎn)介Selenium Core:JavaScript FrameworkSelenium Core是Selenium的核心部分,它由一些純js代碼組成, 可以運(yùn)行在windows/linux的不同browser上,我們就是通過(guò)這些js代碼,才可以實(shí)現(xiàn)程序?qū)g覽器的控制。IDE:Firefox插件IDE是在core的基礎(chǔ)上的一種應(yīng)用, 通過(guò)UI實(shí)現(xiàn)類似QTP/Winner的腳本錄制回放功能;Se
5、lenium IDE是通過(guò)監(jiān)聽用戶對(duì)html頁(yè)面的操作來(lái)錄制腳本的,是真正能夠監(jiān)聽用戶對(duì)html頁(yè)面的操作的錄制工具第10頁(yè),共46頁(yè)。Selenium簡(jiǎn)介RC(Remote Control)Selenium RC模式,是客戶端利用各種編程語(yǔ)言,通過(guò)網(wǎng)絡(luò)向Selenium Server發(fā)送指令,Selenium Server接收到測(cè)試指令后,啟動(dòng)瀏覽器并向其發(fā)出JavaScript調(diào)用實(shí)現(xiàn)對(duì)Html頁(yè)面的全面追蹤,并通過(guò)網(wǎng)絡(luò)把執(zhí)行結(jié)果返回給調(diào)用者Selenium Server的實(shí)現(xiàn)原理是其打開瀏覽器時(shí),把自己的JavaScript文件嵌入網(wǎng)頁(yè)中。然后Selenium的網(wǎng)頁(yè)通過(guò)frame嵌入目標(biāo)
6、網(wǎng)頁(yè)。這樣,就可以使用Selenium的JavaScript對(duì)象來(lái)控制目標(biāo)網(wǎng)頁(yè)第11頁(yè),共46頁(yè)。Selenium簡(jiǎn)介WebDriverWebDriver啟動(dòng)目標(biāo)瀏覽器,并綁定到指定端口。該啟動(dòng)的瀏覽器實(shí)例,做webdriver的remoteserver。Client端通過(guò)CommandExcuter發(fā)送HTTPRequest給remoteserver的偵聽端口(通信協(xié)議:thewebriverwireprotocol)Remoteserver需要依賴原生的瀏覽器組件(如:IEDriver.dll,chromedriver.exe),來(lái)轉(zhuǎn)化轉(zhuǎn)化瀏覽器的native調(diào)用第12頁(yè),共46頁(yè)。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簡(jiǎn)單,因?yàn)樗刂浦鴱牟僮飨到y(tǒng)層面的瀏覽器。Selenium服務(wù)器充當(dāng)瀏覽器和Selenese的命令之間的中間人webdriver直接相互作用,以在瀏覽器和使用瀏覽器的引擎進(jìn)行控制。Selenium RC的腳本執(zhí)行速度較慢,因?yàn)樗褂昧薐avascript來(lái)與RC互動(dòng)webdriver的速度更快,因?yàn)樗苯咏换ナ褂玫臑g覽器。Selenium RC不能支持無(wú)頭,因?yàn)樗枰粋€(gè)
8、真正的瀏覽器一起工作webdriver可以支持無(wú)頭執(zhí)行它是一個(gè)簡(jiǎn)單的API復(fù)雜,API相比,RC有點(diǎn)大不能測(cè)試移動(dòng)應(yīng)用程序可測(cè)試iPhone/Android應(yīng)用程序第13頁(yè),共46頁(yè)。Selenium安裝(基于Python語(yǔ)言)下載并安裝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頁(yè),共46頁(yè)
9、。Selenium安裝(基于Python語(yǔ)言)安裝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頁(yè),共
10、46頁(yè)。瀏覽器操作設(shè)置最大化driver.maximize_window()設(shè)置瀏覽器大小driver.set_window_size(寬, 高)設(shè)置瀏覽器前進(jìn)后退driver.back()driver.forward()關(guān)閉瀏覽器driver.quit()打開瀏覽器driver.get(“”)第16頁(yè),共46頁(yè)。瀏覽器操作第17頁(yè),共46頁(yè)。對(duì)象定位對(duì)象的定位和操作是自動(dòng)化測(cè)試的核心部分,其中操作又是建立在定位的基礎(chǔ)上,因此對(duì)象的定位又顯得特別重要。對(duì)象的定位分為以下幾種:IdNameClass nameTag nameLink textXpath:部分瀏覽器會(huì)提供計(jì)算xpath的插件。(f
11、irefox、chrome)Css selector第18頁(yè),共46頁(yè)。對(duì)象定位-單個(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頁(yè),共46頁(yè)。對(duì)象定位-一組元素定位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頁(yè),共46頁(yè)。對(duì)象定位對(duì)象的定位要依據(jù)idnamecssxpath的順序進(jìn)行定位id、name是最常用并且最容易的方式Css、xpath往往會(huì)與id、name配合使用Xpath是最脆弱的方式unitsServices componesui第21頁(yè),共46頁(yè)。對(duì)象定位第22頁(yè),共46頁(yè)。對(duì)象定位第23頁(yè),共46頁(yè)。對(duì)象定位-id第24頁(yè),共46頁(yè)。對(duì)象定位-name第25頁(yè),共46頁(yè)。對(duì)象定位-xpath第26頁(yè),共46頁(yè)。操作測(cè)試對(duì)象清除元素內(nèi)容Clear()模擬按鍵輸入Send_keys(“”)單擊元素Cl
14、ick()提交表單Submit()獲取大小Size獲取文本內(nèi)容Text獲取相關(guān)屬性值get_attribute(name)查看對(duì)象是否可見is_displayed()獲取對(duì)象屬性get_attribute()第27頁(yè),共46頁(yè)。鼠標(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頁(yè),共46頁(yè)。鍵盤事件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頁(yè),共46頁(yè)。設(shè)置等待時(shí)間固定休眠時(shí)間Sleep(時(shí)間)超時(shí)等待,設(shè)置最長(zhǎng)等待時(shí)
16、間implicitly_wait(時(shí)間)設(shè)置每隔一段時(shí)間內(nèi)檢測(cè)當(dāng)前頁(yè)面元素是否存在WebDriverWait(driver,時(shí)間).until( )WebDriverWait(driver,時(shí)間).until_not()第30頁(yè),共46頁(yè)。層級(jí)定位元素有多層父元素,當(dāng)定位子元素時(shí)需要先定位父元素,然后定位到子元素。driver.find_element_by_id().find_element_by_link_text()界面中多個(gè)frame,多個(gè)frame處于父級(jí)子級(jí)關(guān)系,先找到父級(jí)的frame1,再找到子級(jí)的frame2.(可通過(guò)frame的id及name進(jìn)行定位)driver.switc
17、h_to_frame(“frame1)driver.switch_to_frame(frame2)第31頁(yè),共46頁(yè)。窗口處理獲取當(dāng)前窗口current_window_handle獲取所有窗口window_handles切換窗口switch_to_window(待切換窗口)第32頁(yè),共46頁(yè)。對(duì)話框處理定位對(duì)話框alert = driver.switch_to_alert()獲取對(duì)話框文本內(nèi)容alert.text()點(diǎn)擊對(duì)話框確認(rèn)按鈕alert.accept()點(diǎn)擊對(duì)話框取消按鈕alert.dismiss()第33頁(yè),共46頁(yè)。下拉框處理test1test2test3test4test5tes
18、t6第34頁(yè),共46頁(yè)。下拉框處理例子#-*-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頁(yè),共46頁(yè)。執(zhí)行js文件當(dāng)遇到WebDriver無(wú)法完成的操作時(shí),可以通過(guò)執(zhí)行js文件來(lái)完成。方法:execute_script(js)第36頁(yè),共46頁(yè)。cookie處理獲取所有cookie信息get_cookies()獲取制定cookie信息get_cookies(name)添加cookie信息add_cookie(name,value)刪除特定cookiedelete_cookie(name)刪除所有cookiedelete_all_cookies()第37頁(yè),共46頁(yè)。cookie處理獲取所有cookie信息get_cookies()獲取
20、制定cookie信息get_cookies(name)添加cookie信息add_cookie(name,value)刪除特定cookiedelete_cookie(name)刪除所有cookiedelete_all_cookies()第38頁(yè),共46頁(yè)。驗(yàn)證碼處理去掉驗(yàn)證碼設(shè)置萬(wàn)能驗(yàn)證碼Python圖片驗(yàn)證碼獲取(識(shí)別率不是百分之百)通過(guò)添加登錄cookie通過(guò)擋板第39頁(yè),共46頁(yè)。斷言處理assert :驗(yàn)證失敗了,測(cè)試終止Verify:驗(yàn)證失敗了,其余測(cè)試案例繼續(xù)執(zhí)行Waitfor:待某一條件為True時(shí)測(cè)試案例執(zhí)行,待某一條件為false時(shí)測(cè)試案例失敗并暫停測(cè)試。第40頁(yè),共46頁(yè)。
21、斷言處理assertLocation(判斷當(dāng)前是在正確的頁(yè)面)assertTitle(檢查當(dāng)前頁(yè)面的title是否正確)assertValue(檢查input的值, checkbox或radio,有值為”on”無(wú)為”off”)assertSelected(檢查select的下拉菜單中選中是否正確)assertSelectedOptions(檢查下拉菜單中的選項(xiàng)的是否正確)assertText(檢查指定元素的文本)assertTextPresent(檢查在當(dāng)前給用戶顯示的頁(yè)面上是否有出現(xiàn)指定的文本)assertTextNotPresent(檢查在當(dāng)前給用戶顯示的頁(yè)面上是否沒有出現(xiàn)指定的文本)as
22、sertAttribute(檢查當(dāng)前指定元素的屬性的值)assertTable(檢查table里的某個(gè)cell中的值)assertEditable(檢查指定的input是否可以編輯)assertNotEditable(檢查指定的input是否不可以編輯)assertAlert(檢查是否有產(chǎn)生帶指定message的alert對(duì)話框)waitForElementPresent (等待檢驗(yàn)?zāi)吃氐拇嬖?。為真時(shí),則執(zhí)行。)第41頁(yè),共46頁(yè)。自動(dòng)化測(cè)試框架為什么引入自動(dòng)化測(cè)試框架 有別于傳統(tǒng)的桌面應(yīng)用開發(fā),Web應(yīng)用因?yàn)槠涞芷诙?,需求變化快特殊性質(zhì),越來(lái)越多的Web開發(fā)團(tuán)隊(duì)在擁抱敏捷。同時(shí)隨著前端技術(shù)Javacript,Html5,等不斷被推出和完善,Web應(yīng)用也變得越來(lái)越復(fù)雜很絢麗。這都給我們的測(cè)試帶來(lái)了挑戰(zhàn)。第42頁(yè),共46頁(yè)。自動(dòng)化測(cè)試框架為什么引入自動(dòng)化測(cè)試框架持續(xù)變化的需求復(fù)雜的UI往往一個(gè)測(cè)試團(tuán)隊(duì)需要應(yīng)付多個(gè)項(xiàng)目的測(cè)試工作非常有限的資源(人力,成本)跨平臺(tái)、跨瀏覽器第43頁(yè),共46頁(yè)。自動(dòng)化測(cè)試框架為什么引入自動(dòng)化測(cè)試框架沒有框架的自動(dòng)化測(cè)試是找不到對(duì)象的,即使找到了也不會(huì)很幸福,就像沒有車沒有房很難找到對(duì)象是一樣的道理。第44頁(yè),共46
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人2024年度在線教育服務(wù)合同5篇
- 海底兩萬(wàn)里觀后感與探討
- 16大家一起來(lái)合作 (說(shuō)課稿)-部編版道德與法治一年級(jí)下冊(cè)
- 3 古詩(shī)詞三首 西江月·夜行黃沙道中(說(shuō)課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)上冊(cè)
- 上饒衛(wèi)生學(xué)校二期建設(shè)項(xiàng)目(2024版)
- 會(huì)員協(xié)議書范本
- 保溫系統(tǒng)施工的合同范本
- 專用化學(xué)品銷售協(xié)議示例(2024年發(fā)布)版B版
- 專用設(shè)備買賣協(xié)議細(xì)則(2024版)版B版
- 專業(yè)鞋品采購(gòu)協(xié)議模板2024版A版
- 社區(qū)老年人項(xiàng)目計(jì)劃書
- 《1.我又長(zhǎng)大了一歲》教學(xué)課件∣泰山版
- 斷裂力學(xué)-1緒論課件
- 深基坑工程驗(yàn)收表
- 醫(yī)學(xué)交流課件:RCT的基本概念及原則(PPT 37頁(yè))
- SLZ 549-2012 用水審計(jì)技術(shù)導(dǎo)則(試行)
- qes三體系審核培訓(xùn)ppt課件
- CASS文字編緝
- 農(nóng)文旅一體化項(xiàng)目可行性研究報(bào)告寫作范文
- JJF 1406-2013 地面激光掃描儀校準(zhǔn)規(guī)范(原版-高清)
- 轉(zhuǎn)爐系統(tǒng)機(jī)械設(shè)備概述
評(píng)論
0/150
提交評(píng)論