軟件測試(第2版) 課件 第6章 Web自動化測試_第1頁
軟件測試(第2版) 課件 第6章 Web自動化測試_第2頁
軟件測試(第2版) 課件 第6章 Web自動化測試_第3頁
軟件測試(第2版) 課件 第6章 Web自動化測試_第4頁
軟件測試(第2版) 課件 第6章 Web自動化測試_第5頁
已閱讀5頁,還剩104頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章Web自動化測試《軟件測試(第2版)》學習目標/Target

熟悉自動化測試,能夠歸納使用自動化測試需要滿足的條件與自動化測試的優(yōu)缺點了解自動化測試的常見技術(shù),能夠描述3種常見的自動化測試技術(shù)掌握搭建自動化測試環(huán)境的方式,能夠獨立安裝Python解釋器、PyCharm、Selenium和瀏覽器驅(qū)動掌握Selenium元素定位的方法,能夠靈活應用8種方法定位Web頁面元素學習目標/Target

掌握Selenium常用的操作方法,能夠靈活應用常用的元素操作、瀏覽器操作和元素等待等方法掌握自動化測試框架的使用,能夠使用unittest和pytest框架進行自動化測試掌握學成在線教育平臺項目的測試方式,能夠獨立測試項目中的登錄、退出和頁面跳轉(zhuǎn)功能章節(jié)概述/Summary隨著IT技術(shù)的發(fā)展,軟件產(chǎn)品開發(fā)周期越來越短,軟件測試的任務越來越重,而測試中的許多操作都是重復性的、非創(chuàng)造性的,但要求工作準確、細致,此時自動化測試工具能夠代替人工去完成這樣的工作。軟件自動化測試是為代替人工測試而產(chǎn)生的,它將自動化工具和技術(shù)應用于軟件測試,旨在減少人工測試的重復性工作,以更快、更少的工作構(gòu)建質(zhì)量更好的軟件。本章將對Web自動化測試的相關(guān)知識進行講解。目錄/Contents01020304自動化測試概述自動化測試常見技術(shù)搭建自動化測試環(huán)境Selenium元素定位方法05Selenium常用的操作方法目錄/Contents06070809自動化測試框架測試環(huán)境準備定位學成在線教育平臺首頁元素測試登錄和退出功能10測試頁面跳轉(zhuǎn)功能自動化測試概述6.1

先定一個小目標!熟悉自動化測試,能夠歸納使用自動化測試需要滿足的條件與自動化測試的優(yōu)缺點6.1自動化測試概述6.1自動化測試概述自動化測試是一種把人工驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的測試過程。測試人員通過一些測試工具或框架,編寫自動化測試腳本來模擬人工測試,從而實現(xiàn)自動化測試。6.1自動化測試概述項目需求變動不頻繁自動化測試需要滿足的3個條件測試腳本的穩(wěn)定性決定了自動化測試的維護成本。如果項目需求變動過于頻繁,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,不斷地對腳本代碼進行修改與調(diào)試,有時候還需要花費很多時間對自動化測試的框架進行修改。項目進度壓力不大,時間不緊迫在自動化測試過程中,測試工具需要多次對項目進行測試后才能有效預防項目中的缺陷,并且在這個過程中測試人員還需要設(shè)計自動化測試框架、編寫并調(diào)試自動化測試腳本代碼,這些操作都需要給予足夠的時間才可以完成。充足的時間有利于測試人員編寫高質(zhì)量的腳本,從而提高自動化測試的質(zhì)量。多種瀏覽器或平臺上可以重復運行相同的測試腳本在自動化測試過程中,測試人員需要耗費一定的時間去編寫測試腳本代碼,如果測試腳本代碼的復用率比較低,則會使編寫腳本的成本大于創(chuàng)造的經(jīng)濟價值,這樣會增加項目開發(fā)的經(jīng)濟負擔。6.1自動化測試概述在軟件開發(fā)的過程中,由于開發(fā)團隊通常追求敏捷開發(fā),所以許多開發(fā)團隊采用金字塔測試策略。6.1自動化測試概述單元測試接口測試UI測試自動化測試金字塔策略單元測試要求開發(fā)人員在開發(fā)的過程中對每個功能模塊(函數(shù)、類方法)進行測試,例如檢測其中某一項功能是否按預期要求正常運行。單元測試中通常使用白盒測試方法,主要對代碼的內(nèi)部邏輯結(jié)構(gòu)進行測試。接口測試要求對數(shù)據(jù)傳輸、數(shù)據(jù)庫性能等進行測試,從而保證數(shù)據(jù)傳輸和處理的完整性。接口功能的完整運作對整個項目功能擴展、升級與維護有著重要作用,接口測試通常使用黑盒測試與白盒測試相結(jié)合的方法進行。UI測試以用戶體驗為主,由于軟件的所有功能都是通過UI這一層展示給用戶的,所以UI測試也很重要。UI測試并不是完全地使用自動化測試方式實現(xiàn),其中也需要人工操作來確定UI的易用程度。6.1自動化測試概述自動化測試與人工測試相比,既有優(yōu)點也有缺點。自動化測試雖然能夠解決人工測試不能解決的復雜的測試場景問題,但是自動化測試也不能完全代替人工測試,例如,人工測試中測試人員經(jīng)過大腦思考的邏輯判斷與細致定位操作是自動化測試無法完成的,測試人員的測試經(jīng)驗也是自動化測試不具備的。當需要對項目進行回歸測試時,只需要重新按照預先設(shè)計好的測試用例和業(yè)務操作流程進行測試即可。提高回歸測試的效率自動化測試在測試的過程中是由測試工具每次按照相同的軌跡不斷地自動執(zhí)行測試操作來完成的。提高測試的精確度自動化測試可以在無人看守的狀態(tài)下對測試結(jié)果進行分析,測試人員可以有時間和精力投入到其他測試工作中。提高測試人員的利用率自動化測試可以實現(xiàn)大量用戶同時訪問并操作項目,從而達到對項目進行負載測試與壓力測試的目的。提高測試的便捷性自動化測試的優(yōu)點6.1自動化測試概述QPS和TPS缺點1缺點2不能提高測試的有效性。自動化測試的腳本是由代碼編寫而成,在測試過程中,腳本可能會出現(xiàn)異常或邏輯錯誤等情況,此時將無法提高測試的有效性。自動化測試工具本身也是一個產(chǎn)品,當它在不同的操作系統(tǒng)或平臺上運行時也可能會出現(xiàn)缺陷。發(fā)現(xiàn)的缺陷比人工測試少且不容易發(fā)現(xiàn)新的缺陷。自動化測試工具沒有思維,無法進行主觀判斷,只能用于發(fā)現(xiàn)新版本的軟件中是否出現(xiàn)舊版本的軟件中出現(xiàn)過的缺陷,不易發(fā)現(xiàn)軟件中的新缺陷,并且發(fā)現(xiàn)的缺陷數(shù)量比人工測試要少。自動化測試常用于缺陷預防而不是發(fā)現(xiàn)更多新缺陷。自動化測試的缺點6.1自動化測試概述自動化測試常見技術(shù)6.2

先定一個小目標!了解自動化測試的常見技術(shù),能夠描述3種常見的自動化測試技術(shù)6.2自動化測試常見技術(shù)6.2自動化測試常見技術(shù)1.錄制與回放技術(shù)錄制是指先由測試人員對桌面應用程序或者Web頁面的某一項功能完成一遍需要測試的流程,然后通過自動化測試工具記錄測試流程中客戶端和服務器之間的通信過程,以及用戶與應用程序交互時的操作行為,自動生成一個腳本。在測試執(zhí)行期間可以回放測試的流程,通過回放能夠查看錄制過程中存在的錯誤和不足,例如圖片刷新緩慢、URL無法訪問等。6.2自動化測試常見技術(shù)在錄制過程中,每一個測試過程都會生成單獨的測試腳本,并且程序數(shù)據(jù)和腳本會混合在一起,使得維護成本很高。無論是簡單的界面還是復雜的界面,一旦發(fā)生變化,測試人員都需要重新錄制,使得腳本的可重復利用率降低。6.2自動化測試常見技術(shù)腳本是測試計算機程序執(zhí)行的指令集合。腳本可以用JavaScript、Python、Java等語言編寫,如果要使用錄制生成的腳本,則需要修改后再使用,這樣可以減少測試人員編寫腳本的工作量。2.腳本技術(shù)6.2自動化測試常見技術(shù)線性腳本通過錄制人工執(zhí)行測試用例得到的腳本,包括鼠標點擊事件、頁面選擇、數(shù)據(jù)輸入等操作。線性腳本可以完整地進行回放。結(jié)構(gòu)化腳本結(jié)構(gòu)化腳本類似于結(jié)構(gòu)化程序設(shè)計,具有多種邏輯結(jié)構(gòu),例如順序、分支、循環(huán)等,并且它還具有函數(shù)調(diào)用功能。結(jié)構(gòu)化腳本可以靈活地測試各種復雜功能。

共享腳本常用的3種腳本技術(shù)在自動化測試中,一個腳本可以調(diào)用其他腳本進行測試,這些被調(diào)用的腳本就是共享腳本。共享腳本可以使腳本被多個測試用例共享。6.2自動化測試常見技術(shù)6.2自動化測試常見技術(shù)數(shù)據(jù)驅(qū)動是指從數(shù)據(jù)文件中讀取輸入數(shù)據(jù)并將數(shù)據(jù)以參數(shù)的形式輸入腳本測試,不同的測試用例使用不同類型的數(shù)據(jù)文件。數(shù)據(jù)驅(qū)動技術(shù)實現(xiàn)了數(shù)據(jù)和腳本分離,相較于錄制與回放測試技術(shù),數(shù)據(jù)驅(qū)動技術(shù)極大地提高了腳本利用率和可維護性,但是界面變化較大的項目不適合使用數(shù)據(jù)驅(qū)動技術(shù)。3.數(shù)據(jù)驅(qū)動技術(shù)6.2自動化測試常見技術(shù)關(guān)鍵字驅(qū)動常見的數(shù)據(jù)驅(qū)動技術(shù)關(guān)鍵字驅(qū)動是數(shù)據(jù)驅(qū)動的改進,它將數(shù)據(jù)與腳本分離、界面元素與內(nèi)部對象分離、測試過程與實現(xiàn)細節(jié)分離。關(guān)鍵字驅(qū)動的測試邏輯為按照關(guān)鍵字進行分解得到數(shù)據(jù)文件,常用的關(guān)鍵字主要包括被操作對象、操作和值。行為驅(qū)動行為驅(qū)動是指根據(jù)不同的測試場景設(shè)計不同的測試用例,它需要開發(fā)人員、測試人員、產(chǎn)品業(yè)務分析人員等協(xié)作完成。行為驅(qū)動測試是基于當前項目的業(yè)務需求、數(shù)據(jù)處理、中間層進行的協(xié)作測試,它注重的是測試軟件的內(nèi)部運作變化,從而解決單元測試中的細節(jié)問題。搭建自動化測試環(huán)境6.3

先定一個小目標!掌握搭建自動化測試環(huán)境的方式,能夠獨立安裝Python解釋器、PyCharm、Selenium和瀏覽器驅(qū)動6.3搭建自動化測試環(huán)境6.3搭建自動化測試環(huán)境1.安裝Python解釋器和PyCharm首先訪問Python的官方網(wǎng)站,下載對應的Python解釋器進行安裝,如下圖所示。6.3搭建自動化測試環(huán)境單擊Python解釋器下載頁面中的“DownloadWindowsinstaller(64-bit)”即可下載Python解釋器安裝包,當下載完成后,會得到一個名為python-3.8.10-amd64.exe的安裝包,雙擊該安裝包進入InstallPython3.8.10(64-bit)頁面,如下圖所示。6.3搭建自動化測試環(huán)境PyCharm是一個專門用于Python開發(fā)的IDE工具,它具有代碼跳轉(zhuǎn)、智能提示、代碼調(diào)試、實時錯誤高亮顯示、自動化代碼重構(gòu)等特點,可以幫助用戶在使用Python語言開發(fā)時提高效率。首先訪問PyCharm官方網(wǎng)站并進入PyCharm的下載頁面,選擇Community版本進行下載,如下圖所示。6.3搭建自動化測試環(huán)境單擊Community版本處的“Download”按鈕下載PyCharm安裝包,下載成功后,雙擊該安裝包,程序會進入WelcometoPyCharmCommunityEditionSetup頁面,單擊“Next”按鈕后會進入下一步安裝,在后續(xù)安裝過程中不需要進行其他特殊操作,直接按照默認的方式安裝即可,如下圖所示。6.3搭建自動化測試環(huán)境Selenium是一個用于測試Web應用程序的工具,該工具支持多瀏覽器,例如Chrome、Firefox、IE等;該工具還支持多系統(tǒng),例如Windows、Linux、macOS等,同時也支持在多種編程語言中使用,例如Java、Python、PHP等。Selenium通過網(wǎng)頁驅(qū)動程序(SeleniumWebDriver)可以讓測試腳本直接與瀏覽器交互,能夠提高自動化測試的效率。在安裝Selenium時可以通過2種方式進行安裝,第1種方式是通過pip包管理工具進行安裝,第2種方式是通過PyCharm進行安裝。2.安裝Selenium6.3搭建自動化測試環(huán)境由于在安裝Python解釋器時會自動安裝pip包管理工具,所以在網(wǎng)絡(luò)連接正常的情況下,可以直接通過pip包管理工具安裝Selenium。首先在計算機中打開命令提示符窗口,然后在窗口中輸入“pipinstallselenium==3.141.0”命令,最后按“Enter”鍵即可安裝Selenium,如下圖所示。(1)通過pip包管理工具安裝Selenium6.3搭建自動化測試環(huán)境需要說明的是,如果想要安裝Selenium的最新版本,則可以在命令提示符窗口中輸入“pipinstallselenium”命令進行安裝。6.3搭建自動化測試環(huán)境首先打開PyCharm集成開發(fā)工具,創(chuàng)建一個名為Chapter06的程序,單擊菜單欄中的“File”選項,然后單擊“Settings…”選項,會彈出一個Settings對話框,如下圖所示。(2)通過PyCharm集成開發(fā)工具安裝Selenium6.3搭建自動化測試環(huán)境在Settings對話框的搜索欄中輸入selenium,勾選Selenium版本信息下方的“Specifyversion”復選框,選擇“3.141.0”的版本,最后單擊下方的“InstallPackage”按鈕進行安裝,如下圖所示。6.3搭建自動化測試環(huán)境在Web自動化測試中,瀏覽器驅(qū)動通過將PyCharm中的測試腳本轉(zhuǎn)換為瀏覽器能夠識別的指令來模擬用戶操作網(wǎng)頁,瀏覽器在接收到指令后,會通過瀏覽器驅(qū)動將操作結(jié)果返回到PyCharm的控制臺中。每一種瀏覽器都需要有一個特定的瀏覽器驅(qū)動,例如,Chrome瀏覽器驅(qū)動是chromedriver.exe,F(xiàn)irefox瀏覽器驅(qū)動是geckodriver.exe,IE瀏覽器驅(qū)動是IEDriverServer.exe。3.安裝瀏覽器驅(qū)動6.3搭建自動化測試環(huán)境單擊Chrome瀏覽器右上角的“”,選擇“幫助”→“關(guān)于GoogleChrome選項”,會彈出一個“設(shè)置-關(guān)于Chrome”的頁面,在該頁面中可以查看Chrome的版本信息,如下圖所示。(1)查看Chrome版本信息6.3搭建自動化測試環(huán)境訪問Chrome瀏覽器驅(qū)動的官方網(wǎng)站,由于當前使用的Chrome瀏覽器版本為100.0.4896.127,所以此處選擇“100.0.4896.20/”進行下載。單擊“chromedriver_win32.zip”鏈接進行下載,如下圖所示。(2)下載Chrome瀏覽器驅(qū)動6.3搭建自動化測試環(huán)境注意當下載Chrome瀏覽器驅(qū)動時,有時會找不到與瀏覽器版本號相同的驅(qū)動,此時可以下載與瀏覽器大版本號相同的驅(qū)動,例如Chrome瀏覽器版本為100.0.4896.127,則該瀏覽器的大版本號為100。Selenium工具的基本應用6.4

先定一個小目標!掌握Selenium元素定位的方法,能夠靈活應用8種方法定位Web頁面元素6.4.1Selenium元素定位方法6.4.1Selenium元素定位方法通過Selenium來自動操作Web頁面時,首先需要定位頁面中要操作的對象,例如,要模擬用戶在百度網(wǎng)站的輸入框中輸入一段文字內(nèi)容,必須先定位到該輸入框,然后才能輸入文字內(nèi)容。輸入框可以稱為頁面中的元素,常見的頁面元素還有按鈕、單選框、復選框、超鏈接等。每個元素都有很多屬性,例如id、name、class等,并且每個屬性都有屬性值。6.4.1Selenium元素定位方法Selenium提供了用于實現(xiàn)Web自動化測試的第三方類庫webdriver,該庫提供了元素定位方法、元素操作方法和鍵盤操作方法等。測試人員在編寫自動化測試腳本時,可以調(diào)用Selenium元素定位方法,將每個元素屬性的值作為參數(shù)傳遞到元素定位方法中即可實現(xiàn)自動定位。Selenium的WebDriver分別提供了單個元素和一組元素的定位方法。6.4.1Selenium元素定位方法方法說明find_element_by_id(id_)表示通過元素的id屬性值定位元素,該方法中的參數(shù)id_表示元素在HTML頁面中的id屬性值find_element_by_name(name)表示通過元素的name屬性值定位元素,該方法中的參數(shù)name表示元素在HTML頁面中的name屬性值find_element_by_class_name(name)表示通過元素的class屬性值定位元素,該方法中的參數(shù)name表示元素在HTML頁面中的class屬性值find_element_by_tag_name(name)表示通過元素的tag_name(標簽名)定位元素,該方法中的參數(shù)name表示元素在HTML頁面的標簽名單個元素的定位方法如下表。1.單個元素的定位方法6.4.1Selenium元素定位方法方法說明find_element_by_link_text(text)表示通過超鏈接的全部文本內(nèi)容定位元素,該方法中的參數(shù)text表示超鏈接的全部文本內(nèi)容find_element_by_partial_link_text(text)表示通過超鏈接的一部分文本內(nèi)容定位元素,該方法中的參數(shù)text表示超鏈接文本的部分或全部內(nèi)容find_element_by_xpath(xpath)表示通過元素的路徑定位元素,該方法中的參數(shù)xpath表示元素路徑find_element_by_css_selector(css_selector)表示通過元素的CSS選擇器定位元素,該方法中的參數(shù)css_selector表示選擇器6.4.1Selenium元素定位方法需要說明的是,Web頁面通常由多種不同的標簽組成,每種標簽可能在頁面中存在多個。如果定位到多個相同的標簽,則程序默認只會定位第一個標簽(在頁面中從上到下排列后的第一個標簽),在使用tag_name定位元素時,會無法精準定位每個元素,一般很少使用find_element_by_tag_name()方法定位元素。6.4.1Selenium元素定位方法在CSS選擇器中,常用的選擇器包括id選擇器、class選擇器、元素選擇器、屬性選擇器和層級選擇器等。例如,在調(diào)用find_element_by_css_selector()方法定位Web頁面中的元素時,如果使用id選擇器,則該方法中的參數(shù)寫為#id;如果使用css選擇器,則該方法中的參數(shù)寫為.class。6.4.1Selenium元素定位方法一組元素的定位方法與單個元素的定位方法相似,不同的是,在定位一組元素的方法中,element需要使用復數(shù)形式,即elements。例如,在測試Web頁面時,如果需要通過元素的id屬性值定位一組元素,則可以調(diào)用find_elements_by_id()方法;如果需要通過元素的CSS選擇器定位一組元素,則可以調(diào)用find_elements_by_css_selector()方法。2.一組元素的定位方法6.4.1Selenium元素定位方法注意當使用元素的id、name或class屬性進行定位時,要確保這些屬性的值在頁面中是唯一的,否則程序?qū)⒊霈F(xiàn)定位不到元素的問題。下面以TPshop開源商城項目為例,演示如何使用元素定位方法來定位項目中的“搜索商品”輸入框、“搜索”按鈕和“購物車”文本超鏈接。6.4.1Selenium元素定位方法6.4.1Selenium元素定位方法首先在瀏覽器中訪問TPshop開源商城首頁,然后按鍵盤上的“F12”鍵打開開發(fā)者工具,或在頁面空白處右鍵單擊,在彈出的快捷菜單中選擇“檢查”選項打開開發(fā)者工具,

TPshop開源商城首頁中的元素信息如下圖所示。下面在PyCharm的Chapter06程序中創(chuàng)建location_element.py文件,然后在該文件中調(diào)用元素定位方法,分別定位“搜索商品”輸入框、“搜索”按鈕和“購物車”文本超鏈接。

6.4.1Selenium元素定位方法fromseleniumimportwebdriverdriver=webdriver.Chrome()url="https:///"driver.get(url)#定位”搜索商品”輸入框driver.find_element_by_name("q")#定位"搜索"按鈕driver.find_element_by_xpath("'//*[@id="searchForm"]/button'")#定位“購物車”文本超鏈接driver.find_element_by_class_name(“c-n")調(diào)用find_element()方法定位元素多學一招調(diào)用find_element()方法定位元素,該方法通過By模塊來聲明定位,并傳入對應定位方法的定位參數(shù)。find_element()方法的語法格式如下。6.4.1Selenium元素定位方法find_element(by=By.ID,value=None)find_element()方法中有兩個參數(shù),第一個參數(shù)by表示元素定位的類型,由By模塊提供,默認通過ID屬性來定位;第二個參數(shù)value表示元素定位類型的屬性值。在使用find_element()方法進行元素定位時,需要導入By模塊,具體如下。6.4.1Selenium元素定位方法fromSmon.byimportBy多學一招下面列舉調(diào)用find_element()方法定位元素的示例代碼,具體如下。6.4.1Selenium元素定位方法driver.find_element(By.ID,"userA")driver.find_element(By.NAME,"passwordA")driver.find_element(By.CLASS_NAME,"telA")driver.find_element(By.TAG_NAME,"input")driver.find_element(By.LINK_TEXT,'訪問新浪網(wǎng)站')driver.find_element(By.PARTIAL_LINK_TEXT,'訪問')driver.find_element(By.XPATH,'//*[@id="emailA"]')driver.find_element(By.CSS_SELECTOR,'#emailA')多學一招

先定一個小目標!掌握Selenium常用的操作方法,能夠靈活應用常用的元素操作、瀏覽器操作和元素等待等方法6.4.2Selenium常用的操作方法6.4.2Selenium常用的操作方法在Web自動化測試中,定位頁面中的各類元素只是測試過程中的第一步,在成功定位到頁面中的元素后還需要對這些元素進行操作,例如單擊、輸入、清空等。Web自動化測試的過程需要操作Web頁面中的各類元素,這些操作除了元素的常用操作之外,還包括對瀏覽器的相關(guān)操作。6.4.2Selenium常用的操作方法在Web自動化測試的過程中,元素的常用操作包括輸入、清空、提交表單、單擊、獲取、截圖等,這些常用的操作在自動化測試程序中都有對應的方法,元素的常用操作方法如下表所示。1.元素的常用操作方法方法說明send_keys(*value)輸入操作方法,該方法中的參數(shù)表示輸入的內(nèi)容clear()清空操作方法submit()提交表單操作方法6.4.2Selenium常用的操作方法方法說明click()單擊操作方法get(url)獲取操作方法,該方法中的參數(shù)url表示W(wǎng)eb頁面的資源路徑get_screenshot_as_file(filename)截圖操作方法,該方法中的參數(shù)filename是頁面截圖后存儲的絕對路徑6.4.2Selenium常用的操作方法在自動化測試過程中,除了需要對頁面中的元素進行操作外,還需要對瀏覽器進行一些常用的操作,例如,設(shè)置瀏覽器的窗口大小與關(guān)閉瀏覽器窗口等。瀏覽器的常用操作方法如下表所示。2.瀏覽器的常用操作方法方法說明maximize_window()設(shè)置瀏覽器窗口為最大化minimize_window()設(shè)置瀏覽器窗口為最小化close()關(guān)閉瀏覽器窗口quit()關(guān)閉瀏覽器的所有窗口并退出瀏覽器驅(qū)動6.4.2Selenium常用的操作方法強制等待元素等待的3種方法強制等待主要是通過調(diào)用sleep(seconds)函數(shù)讓程序休眠一段時間,時間到達后,程序再繼續(xù)運行。sleep(seconds)函數(shù)中傳遞的參數(shù)seconds表示等待的時間,該時間的單位默認為秒。隱式等待隱式等待是指定位頁面元素時,如果能定位到元素,則測試程序直接返回該元素,不觸發(fā)等待;如果定位不到該元素,則需要等待一段時間后再進行定位;如果超過程序設(shè)置的最長等待時間還沒有定位到指定元素,則程序會拋出元素不存在的異常(NoSuchElementException)。在程序中設(shè)置隱式等待時需要調(diào)用implicitly_wait(timeout)方法,該方法中的參數(shù)timeout表示隱式等待的最長等待時間,單位為秒。顯式等待顯式等待是指定位指定元素時,如果能定位到指定元素,則測試程序直接返回該元素,不觸發(fā)等待;如果定位不到指定元素,則需要等待一段時間后再重新進行定位;如果超過程序設(shè)置的最長等待時間還沒有定位到指定元素,則程序會拋出超時異常(TimeoutException)。實現(xiàn)顯式等待需要調(diào)用的方法為WebDriverWait(),在程序中進行顯式等待時,WebDriverWait()方法必須與until()方法或until_not()方法結(jié)合使用。3.元素等待的3種方法until()方法和until_not()方法的使用多學一招在程序中設(shè)置顯式等待時需要調(diào)用WebDriverWait()方法,該方法必須與until()方法或until_not()方法結(jié)合使用,關(guān)于這兩個方法的介紹如下。6.4.2Selenium常用的操作方法until()方法用于調(diào)用一個查找元素的匿名函數(shù),如果該函數(shù)的返回值為True,表示查找到元素;如果該函數(shù)的返回值為False,表示未查找到元素。當未查找到元素時,程序會每隔一段時間調(diào)用一次until()方法查找元素,直到查找到元素為止。until_not()方法也用于調(diào)用一個查找元素的匿名函數(shù),如果該函數(shù)的返回值為True,表示未查找到元素;如果該函數(shù)的返回值為False,表示查找到元素。當未查找到元素時,程序會每隔一段時間調(diào)用一次until_not()方法查找元素,直到查找到元素為止。下面以IHRM-人力資源管理系統(tǒng)為例,結(jié)合上述介紹的Selenium常用的操作方法,編寫自動化測試腳本。首先測試登錄IHRM-人力資源管理系統(tǒng),然后截圖保存登錄成功的頁面。

6.4.2Selenium常用的操作方法打開瀏覽器中的開發(fā)者工具,查看IHRM-人力資源管理系統(tǒng)登錄頁面中用戶名、密碼和“登錄”按鈕的元素信息,其中,用戶名輸入框的元素信息如下圖所示。

6.4.2Selenium常用的操作方法密碼輸入框的元素信息如下圖所示。

6.4.2Selenium常用的操作方法“登錄”按鈕的元素信息如下圖所示。

6.4.2Selenium常用的操作方法下面在Chapter06程序中創(chuàng)建operate_element.py文件編寫自動化測試腳本,實現(xiàn)自動登錄并截圖的測試。

6.4.2Selenium常用的操作方法fromtimeimportsleepfromseleniumimportwebdriverdriver=webdriver.Chrome()url="/#/login"driver.get(url)driver.maximize_window()#定位用戶名輸入框username=driver.find_element_by_name('username')username.clear()sleep(1)username.send_keys()>>續(xù)上頁代碼6.4.2Selenium常用的操作方法#定位密碼輸入框password=driver.find_element_by_name('password')password.clear()sleep(1)password.send_keys('888itcast.CN764%...')#定位"登錄"按鈕driver.find_element_by_class_name('loginBtn').click()sleep(2)#將登錄成功頁面截圖保存driver.get_screenshot_as_file("E:\\登錄成功頁面截圖.png")print("自動登錄測試通過")driver.quit()自動化測試框架6.5

先定一個小目標!掌握自動化測試框架的使用,能夠使用unittest和pytest框架進行自動化測試6.5自動化測試框架6.5自動化測試框架在編寫自動化測試腳本時,為了能夠更好地組織、管理和執(zhí)行軟件項目中獨立的測試用例,提高自動化測試腳本的可重用性和測試效率,需要在測試程序中使用自動化測試框架。框架是用于承載一個系統(tǒng)必要功能基礎(chǔ)要素的集合。自動化測試框架則是應用于自動化測試軟件系統(tǒng)時所用的框架。根據(jù)框架的定義,可以將自動化測試框架定義為由一個或多個自動化測試基礎(chǔ)模塊、自動化測試管理模塊、自動化測試統(tǒng)計模塊等組成的工具集合。6.5自動化測試框架在使用Python語言編寫自動化測試腳本測試Web項目時,常用的Python自動化測試框架有unittest、pytest、RobotFramework等,這3種框架主要用于功能測試與單元測試。其中,unittest和pytest是Web自動化測試中常用的2種框架,下面分別對unittest框架和pytest框架進行介紹。6.5自動化測試框架unittest是Python標準庫中自帶的一個單元測試框架,無需安裝即可使用。該框架主要用于管理Web自動化測試程序中的測試用例,該框架不僅提供了豐富的斷言方法,便于判斷每條測試用例的執(zhí)行結(jié)果是否成功,而且還可以生成測試報告便于測試人員查看測試結(jié)果。1.unittest框架6.5自動化測試框架使用unittest框架時,首先通過import在程序中導入unittest模塊,然后定義一個測試類繼承TestCase類,在測試類中至少有一條可執(zhí)行的測試用例,該測試用例的名稱必須以test開頭。6.5自動化測試框架TestSuite表示測試套件,每個測試套件中可以包含多個測試用例。在使用測試套件時,首先在程序中創(chuàng)建測試套件的對象,然后調(diào)用addTest()方法將每個測試用例添加到測試套件的對象中,這樣執(zhí)行一個測試套件就可以執(zhí)行該測試套件中存放的所有測試用例。(2)TestSuite(1)TestCase使用unittest框架需要掌握5個基本要素,分別是TestCase、TestSuite、TextTestRunner、TextTestResult

和Fixture。TestCase表示測試用例,它是unittest框架提供的一個基類。當在程序中創(chuàng)建一個類繼承TestCase時,該類中定義的每個測試方法都是一個測試用例,這些測試方法的名稱必須以test開頭。6.5自動化測試框架TextTestRunner表示測試執(zhí)行器,用于執(zhí)行測試用例或測試套件并返回測試結(jié)果。TextTestRunner類是運行測試用例的驅(qū)動類,該類提供了run()方法來運行測試用例或測試套件。TextTestResult表示測試結(jié)果,它用于展示所有用例執(zhí)行成功或失敗的結(jié)果信息。當程序執(zhí)行完測試用例或測試套件后,TextTestResult會將測試結(jié)果輸出到控制臺中。Fixture表示測試固件,用于初始化或銷毀測試環(huán)境。測試固件可以理解為在測試之前或之后需要做的一些操作。例如,在執(zhí)行測試之前,需要打開瀏覽器、設(shè)置等待時間等;在測試結(jié)束之后,需要清理測試環(huán)境、關(guān)閉瀏覽器、退出瀏覽器驅(qū)動等。(3)TextTestRunner(4)TextTestResult(5)Fixture6.5自動化測試框架Fixture的控制級別分為方法級別、類級別和模塊級別。010203123在測試類中定義setUp()方法與tearDown()方法,這2個方法在每個測試用例被執(zhí)行前后都會被調(diào)用。Fixture的方法級別在測試類中定義setUpClass()方法與tearDownClass()方法,這2個方法上方都需要添加裝飾器@classmethod,這2個方法在測試類運行前后都會被調(diào)用。在模塊中定義setUpModule()方法與tearDownModule()方法,這2個方法在模塊運行前后都會被調(diào)用。Fixture的類級別Fixture的模塊級別6.5自動化測試框架unittest框架還提供了豐富的斷言方法。assertTrue(expr)該方法用于驗證expr是否為真。assertEqual(first,second)該方法用于驗證first是否等于second。assertIn(member,container)該方法用于驗證container中是否包含member。assertIsNone(obj)該方法用于驗證obj是否為None。6.5自動化測試框架pytest是Python中的第三方測試框架,它是unittest的擴展框架,相較于unittest框架,pytest框架更加簡潔、高效,它能夠與主流的自動化測試工具Selenium、Appium和requests等結(jié)合使用,實現(xiàn)Web、App和接口自動化測試。2.pytest框架6.5自動化測試框架由于pytest框架不是Python自帶的自動化測試框架,所以在使用前需要先安裝。在計算機中打開命令提示符窗口,執(zhí)行“pipinstallpytest”命令安裝pytest框架,當按“Enter”鍵后,命令提示符窗口中會輸出安裝pytest框架的信息,如下圖所示。6.5自動化測試框架在使用pytest框架時,測試類的名稱要以Test開頭,測試方法或函數(shù)的名稱要以test開頭。與unittest框架的Fixture類似,pytest框架中也有測試固件,具體如下。模塊級別:在模塊中定義setup_module()方法與teardown_module()方法,這2個方法分別在模塊運行前后被調(diào)用,在整個模塊運行中只執(zhí)行一次,作用于模塊中的測試用例。函數(shù)級別:在模塊中定義setup_function()方法與teardown_function()方法,這2個方法分別在函數(shù)運行前后被調(diào)用。6.5自動化測試框架Fixture的方法級別指的是在類中定義setup_method()方法或setup()方法、teardown_method()方法或teardown()方法,這2個方法分別在測試方法運行前后被調(diào)用,在每個測試方法運行的過程中只執(zhí)行一次,作用于類中的所有測試方法。Fixture的類級別指的是在模塊或類中定義setup_class()方法與teardown_class()方法,并在這2個方法上方添加裝飾器@classmethod。這2方法分別在類運行前后被調(diào)用,在類運行的過程中只執(zhí)行一次,作用于類中的測試用例。6.5自動化測試框架pytest框架沒有提供斷言方法,而是直接使用Python中的assert關(guān)鍵字與表達式結(jié)合進行斷言,pytest框架中常用的斷言表達式如下。asserta==b:用于判斷a是否等于b。asserta!=b:用于判斷a是否不等于b。asserta:用于判斷a是否為真。assertainb:用于判斷b是否包含a。asserta>b:用于判斷a是否大于b。下面分別在Chapter06程序中創(chuàng)建test_sum.py和test_add.py文件。在test_sum.py文件中,使用unittest框架測試定義的函數(shù)my_sum()是否為求和函數(shù)。6.5自動化測試框架importunittestdefmy_sum(a,b):returna+bclassMyTest(unittest.TestCase):deftest_sum(self):result=my_sum(2,3)self.assertEqual(result,5)下面在test_add.py文件中,使用pytest框架測試定義的函數(shù)add()是否為求和函數(shù)。6.5自動化測試框架defadd(a,b):returna+bclassTestAdd:deftest_add(self,result=5):assertresult==add(2,3)在PyCharm中配置pytest運行環(huán)境由于unittest是Python標準庫中自帶的一個單元測試框架,所以在PyCharm中運行程序時,默認使用的是unittest框架。在編寫自動化測試代碼時,如果使用了pytest框架,則在運行程序前需要在PyCharm中配置pytest運行環(huán)境,否則運行程序會報錯。下面介紹在PyCharm中配置pytest運行環(huán)境的具體操作過程。6.5自動化測試框架多學一招6.5自動化測試框架首先單擊PyCharm菜單欄中的File,會彈出一個菜單列表,單擊“Settings...”選項會彈出一個Settings對話框,在該對話框中首先單擊左側(cè)Tools下方的PythonIntegratedTools,然后在右側(cè)單擊Defaulttestrunner后方的圖標“

”,會彈出一個列表,單擊該列表中的pytest選項,最后單擊“OK”按鈕即可成功配置pytest的運行環(huán)境。多學一招6.5自動化測試框架多學一招實例:學成在線教育平臺測試6.6

先定一個小目標!了解測試環(huán)境準備,能夠描述學成在線教育平臺的測試工具6.6.1測試環(huán)境準備6.6.1測試環(huán)境準備在做Web自動化測試之前,首先需要搭建測試環(huán)境,本實例的測試環(huán)境準備具體如下。1.測試項目學成在線教育平臺,訪問地址為“/”,登錄的賬戶名密碼為888itcast.CN764%...。2.測試工具python-3.8.10解釋器。PycharmCommunity版本編輯器。KatalonRecorder5.7.5。Selenium3.141.0。谷歌瀏覽器及谷歌瀏覽器驅(qū)動ChromeDriver。

先定一個小目標!掌握首頁元素的定位,能夠定位學成在線教育平臺首頁元素6.6.2定位學成在線教育平臺首頁元素6.6.2定位學成在線教育平臺首頁元素在使用瀏覽器自帶的開發(fā)者工具定位頁面元素時,通過單擊選擇器可以從HTML頁面中找到特定的元素,之后可以在查看器窗口查看選中的元素id、class、name等屬性信息。以定位學成在線教育平臺首頁中的“登錄”按鈕為例,使用谷歌瀏覽器訪問學成在線教育平臺,在鍵盤上按“F12”鍵即可打開開發(fā)者工具,如下圖所示。6.6.2定位學成在線教育平臺首頁元素1.使用瀏覽器自帶的開發(fā)者工具進行定位KatalonRecorder插件具有錄制和回放腳本、定位網(wǎng)頁元素、將錄制的腳本轉(zhuǎn)換為多種語言代碼的功能,并且可以在谷歌、火狐等瀏覽器上使用。下面以谷歌瀏覽器為例,介紹KatalonRecorder插件的下載、安裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論