RFS自動(dòng)化測(cè)試培訓(xùn)_第1頁(yè)
RFS自動(dòng)化測(cè)試培訓(xùn)_第2頁(yè)
RFS自動(dòng)化測(cè)試培訓(xùn)_第3頁(yè)
RFS自動(dòng)化測(cè)試培訓(xùn)_第4頁(yè)
RFS自動(dòng)化測(cè)試培訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩106頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Content工具簡(jiǎn)介與環(huán)境搭建RobotFramework+Selenium使用持續(xù)集成BDD簡(jiǎn)介與lettuce工具列表RobotFrameworkSeleniumFireBugJenkinslettuceRobotFramework是什么RobotFramework是一款python編寫(xiě)的功能自動(dòng)化測(cè)試框架。具備良好的可擴(kuò)展性,支持關(guān)鍵字驅(qū)動(dòng),可以同時(shí)測(cè)試多種類(lèi)型的客戶(hù)端或者接口,可以進(jìn)行分布式測(cè)試執(zhí)行。主要用于輪次很多的驗(yàn)收測(cè)試和驗(yàn)收測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(ATDD)。自動(dòng)化測(cè)試框架的職責(zé)定義一種統(tǒng)一的方式來(lái)書(shū)寫(xiě)和組織測(cè)試用例(測(cè)試步驟,測(cè)試數(shù)據(jù)與期待返回值);控制測(cè)試用例的執(zhí)行過(guò)程;生成測(cè)試報(bào)告和測(cè)試日志;RobotFramework特性易于使用,采用表格式語(yǔ)法,統(tǒng)一測(cè)試用例格式;重用性好,可以利用現(xiàn)有關(guān)鍵字來(lái)組合新關(guān)鍵字;支持變量;支持創(chuàng)建基于數(shù)據(jù)驅(qū)動(dòng)的測(cè)試用例。結(jié)果報(bào)告和日志采用HTML格式,易于閱讀;提供標(biāo)簽以分類(lèi)和選擇將被執(zhí)行的測(cè)試用例;平臺(tái)、應(yīng)用無(wú)關(guān);功能全面,支持WEB測(cè)試(Selenium)、JavaGUI測(cè)試易于擴(kuò)展,提供了簡(jiǎn)單API,用戶(hù)可以自定義的基于Python或者Java的測(cè)試庫(kù);易于集成,提供了命令行接口和基于XML的輸出文件;易于與版本管理集成Selenium簡(jiǎn)介Selenium是ThoughtWorks專(zhuān)門(mén)為Web應(yīng)用程序編寫(xiě)的一個(gè)驗(yàn)收測(cè)試工具。與其他測(cè)試工具相比,使用Selenium的最大好處是:Selenium測(cè)試直接在瀏覽器中運(yùn)行,就像真實(shí)用戶(hù)所做的一樣。Selenium測(cè)試可以在Windows、Linux和上的InternetExplorer、Mozilla和Firefox中運(yùn)行。其他測(cè)試工具都不能覆蓋如此多的平臺(tái)。RFS=RobotFramework+Selenium(WD)RobotFramework架構(gòu)環(huán)境搭建在線(xiàn)安裝安裝Python,使用Python-2.7安裝wxPython2.8pipinstallrobotframeworkpipinstallrobotframework-ridepipinstallrobotframework-selenium2library瀏覽器driver:

/p/selenium/downloads/list環(huán)境搭建離線(xiàn)安裝1、/pypi/decorator/2、/pypi/robotframework/#downloads3、/pypi/robotframework-selenium2library/1.5.04、/pypi/selenium/2.40.0中文支持在[PythonDir]\Lib\site-packages\robot\utils下的encodingsniffer.py文件中,找到DEFAULT_OUTPUT_ENCODING='cp437':原來(lái)的編碼是’cp437’將其改成’cp936’(簡(jiǎn)體中文,gbk)。*FireBug安裝FireBug入門(mén)使用Content工具簡(jiǎn)介與環(huán)環(huán)境搭建RobotFramework+Selenium使用持續(xù)集成BDD簡(jiǎn)介與lettuceRFS基本使用入門(mén)實(shí)例*新建項(xiàng)目*新建測(cè)試套件件123*新建測(cè)試用例例132*添加測(cè)試庫(kù)132在測(cè)試套件中中添加庫(kù)注意區(qū)分大小小寫(xiě)*編寫(xiě)測(cè)試用例例打開(kāi)禪道登錄錄頁(yè)面輸入用戶(hù)名輸入密碼單擊登錄按鈕鈕關(guān)鍵字*運(yùn)行測(cè)試*運(yùn)行測(cè)試*查看報(bào)告*查看日志24*RFS基本使用元素定位Selenium支持的定位方方式最好以id來(lái)定位,如果果沒(méi)有id可以使用Assign

IdTo

Element關(guān)鍵字來(lái)為元元素分配一個(gè)個(gè)id*Xpath*Xpath1通過(guò)絕對(duì)路徑徑定位元素xpath=/html/body/form/input通過(guò)相對(duì)路徑徑定位元素xpath=//input使用索引來(lái)定定位元素xpath=//input[2]使用屬性值定定位元素xpath=//input[@id=’username’]xpath=//input[@id=’username’][@name=’username’’]xpath=//input[@id=’username’and@name=’username’]xpath=//input[@id=’username’or@name=’username’]*Xpath2使用屬性名稱(chēng)稱(chēng)定為元素xpath=//input[@name]使用部分屬性性值定位元素素使用值來(lái)匹配配任意屬性及及元素//input[@*=’username’’]*切換到新的窗窗口有時(shí),瀏覽器器打開(kāi)了兩個(gè)個(gè)窗口,要跳跳轉(zhuǎn)到新的窗窗口才能操作作元素進(jìn)入新的窗口口SelectWindownew返回到主窗口口SelectWindow main注意:切換到到新窗口后,,關(guān)閉窗口,,必須要有一一步返回到主主頁(yè)面打開(kāi)3和3個(gè)以上的窗口口:@{x}listwindows首先得到所有有窗口的句柄柄列表selectwindow@{x}[2]切換到第三個(gè)個(gè)窗口*進(jìn)入一個(gè)frame或iframe有時(shí),需要先先進(jìn)入一個(gè)frame或iframe再定位一個(gè)元元素,這樣效效率更高,可可以使用如下下兩個(gè)關(guān)鍵詞詞進(jìn)入一個(gè)frame或iframeSelectFrame|locator回到最上層frame或iframeUnselectFrame*js定位:(js)js點(diǎn)擊executejavascriptdocument.querySelectorAll('css')[0].click()移動(dòng)div中內(nèi)嵌滾動(dòng)條條(先定位,再再移動(dòng))移動(dòng)滾動(dòng)條到到最底端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=10000移動(dòng)到最頂端端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=0正常網(wǎng)頁(yè)直接接進(jìn)行移動(dòng)executejavascriptdocument.body.scrollTop=0executejavascriptdocument.scrollTop(0,50)*js定位:(jQuery)jQuery定位(定位使用的是是css定位)executejavascript$('css').click()jQuery事件executejavascript$('css').click()定位后點(diǎn)擊executejavascript$('css').dblclick()定位后雙擊executejavascript$('css').text()定位后得到元元素的文字executejavascript$('css').text('文字')定位后輸入文文字返回得到的文文字${x}executejavascriptreturn$('css').text()*css定位:*網(wǎng)頁(yè)代碼:*css定位實(shí)例:*css結(jié)構(gòu)定位:1、li>a::選選中l(wèi)i標(biāo)標(biāo)簽的子元元素a2、li+a::選選中l(wèi)i同同級(jí)的下下一個(gè)a3、li>a:nth-child(n)/li>a:nth-of-type(n)::選中l(wèi)i下第n個(gè)ali>a:nth-last-child(n)/li>a:nth-last-of-type(n):選中l(wèi)i下,倒數(shù)第n個(gè)a如果n=odd表表示奇數(shù)如果n=even表示偶數(shù)數(shù)4、li>a:last-child/li>a:last-of-type:選中l(wèi)i下最最后面一個(gè)ali>a:first-child/li>a:first-of-type:選中l(wèi)i下第一一個(gè)個(gè)a5、li>a:only-child::li下只有1個(gè)a的a標(biāo)簽RFS基本使用selenium2library*操作瀏覽器Selenium2Lib提供了與瀏覽覽器交互的關(guān)關(guān)鍵詞:OpenBrowserMaximizeBrowserWindowGoToGoBackReloadPageCloseWindowCloseBrowserCloseAllBrowsers驅(qū)動(dòng)不同的瀏瀏覽器Selenium默認(rèn)的是Firefox瀏覽器,其他他瀏覽器需要要自己的driver1、下載IE的driver2、放到項(xiàng)目目目錄下*常用關(guān)鍵字點(diǎn)擊ClickButton|locatorClickElement|locatorClickImage|locatorClickLink|locatorDoubleClickElement|locator有時(shí)在IE中,Click不起作用,可可以用如下命命令來(lái)替代PressKey|<id>|\\13或\\10常用關(guān)鍵字輸入InputPassword|locator|textInputText|locator|text有時(shí)會(huì)出現(xiàn)輸輸入之后界面面沒(méi)有的問(wèn)題題,可以用如如下命令來(lái)觸觸發(fā)頁(yè)面更新新PressKey|<id>|\\13或\\10*常用關(guān)鍵字按鍵PressKey|locator|key例子PressKey|text_field|q|PressKey|login_button|\\13|#ASCIIcodefor特殊編碼0:Keys.NULL,8:Keys.BACK_SPACE,9:Keys.TAB,10:Keys.RETURN,13:Keys.ENTER,24:Keys.CANCEL,27:Keys.ESCAPE,32:Keys.SPACE,42:Keys.MULTIPLY,43:Keys.ADD,44:Keys.SEPARATOR,45:Keys.SUBTRACT,56:Keys.DECIMAL,57:Keys.DIVIDE,59:Keys.SEMICOLON,61:Keys.EQUALS,127:Keys.DELETE常用關(guān)鍵字Selenium2Lib提供了和其他他界面元素交交互的關(guān)鍵詞詞:ElementFocus聚焦Simulate模擬時(shí)間觸發(fā)發(fā)OpenContextMenu打開(kāi)ListSelectAllFromListSelectFromListUnselectFromListCheckboxSelectCheckboxUnselectCheckbox常用關(guān)鍵字Selenium2Lib提供了和其他他界面元素交交互的關(guān)鍵詞詞:RadioButtonSelectRadioButtonFormSubmitFormChooseFile(ForFileUpload)*常用關(guān)鍵字默認(rèn)情況下,Selenium2會(huì)自動(dòng)等待頁(yè)頁(yè)面加載完成成對(duì)于頁(yè)面AJAX可以使用如下下等待頁(yè)面的的關(guān)鍵詞:WaitForCondition|condition|timeout=None|error=NoneWaitUntilPageContains|text|timeout=None|error=NoneWaitUntilPageContainsElement|locator|timeout一種種調(diào)調(diào)試試時(shí)時(shí)可可以以使使用用,,但但是是不不應(yīng)應(yīng)該該留留下下來(lái)來(lái)的SleepxSleep關(guān)鍵鍵詞詞是是RobotFrameworkBuiltInLibrary提供供的的/hg/doc/libraries/BuiltIn.html?r=2.6.1常用用關(guān)關(guān)鍵鍵字字獲取取頁(yè)頁(yè)面面信信息息::PageGetTitleGetLocationGetSourceGetMatchingXpathCountElementGetElementAttributeGetValueGetText(AddedByAdamWu)LinkGetAllLinks常用用關(guān)關(guān)鍵鍵字字獲取取頁(yè)頁(yè)面面信信息息TableGetTableCellListGetListItemsGetSelectedListLabelGetSelectedListLabelsGetSelectedListValueGetSelectedListValuesRFS基本本使使用用彈出出窗窗口口處處理理*常用用關(guān)關(guān)鍵鍵字字AlertShouldBePresentGetAlertMessageChooseCancelOnNextConfirmationChooseOkOnNextConfirmationConfirmAction*AutoItLibrary以管管理理員員身身份份運(yùn)運(yùn)行行cmdpythonsetup.pyinstall導(dǎo)入入庫(kù)庫(kù)AutoItLibraryRFS基本本使使用用編寫(xiě)寫(xiě)測(cè)測(cè)試試用用例例添加加資資源源資源源下下面面可可以以放放自自己己的的關(guān)關(guān)鍵鍵字字*增加加自自定定義義關(guān)關(guān)鍵鍵字字增加加內(nèi)內(nèi)置置模模塊塊為資源添添加庫(kù)引用自定義資資源在測(cè)試套套件中添添加資源源*使用自定定義資源源“打開(kāi)瀏瀏覽器””已經(jīng)變變顏色了了,說(shuō)明明引用正正確*參數(shù)化::

(一一)創(chuàng)建建列表形形式,適適用于少少量數(shù)據(jù)據(jù)*(二)調(diào)調(diào)用read.py腳本,進(jìn)進(jìn)行封裝裝,適用用于大量量數(shù)據(jù)*位置結(jié)構(gòu)構(gòu):excel文件和read.py文件在同同一個(gè)目目錄*read.py腳本,代碼一覽覽*寫(xiě)好自動(dòng)動(dòng)化測(cè)試試用例的的原則要做到流流程和數(shù)數(shù)據(jù)的分分離注意:界界面元素素id不算數(shù)據(jù)據(jù),不應(yīng)應(yīng)分離更新測(cè)試試用例增加一個(gè)個(gè)新的測(cè)測(cè)試用例例這樣好嗎嗎?寫(xiě)好自動(dòng)動(dòng)化測(cè)試試用例的的原則不斷封裝裝,用例例復(fù)用*寫(xiě)好自動(dòng)動(dòng)化測(cè)試試用例的的原則要做到數(shù)數(shù)據(jù)和流流程的分分離不斷抽象象,消除除冗余寫(xiě)好自動(dòng)動(dòng)化測(cè)試試用例的的原則要做到數(shù)數(shù)據(jù)和流流程的分分離不斷抽象象,消除除冗余測(cè)試用例例應(yīng)該簡(jiǎn)簡(jiǎn)單易讀讀,避免免復(fù)雜邏邏輯*寫(xiě)好自動(dòng)動(dòng)化測(cè)試試用例的的原則要做到數(shù)數(shù)據(jù)和流流程的分分離不斷抽象象,消除除冗余測(cè)試用例例應(yīng)該簡(jiǎn)簡(jiǎn)單易讀讀,避免免復(fù)雜邏邏輯問(wèn)題:““登錄””放在這這好嗎??寫(xiě)好自動(dòng)動(dòng)化測(cè)試試用例的的原則1、要做到到流程和和數(shù)據(jù)的的分離2、通過(guò)不斷抽抽象,消除冗冗余3、測(cè)試用例應(yīng)應(yīng)盡量簡(jiǎn)單易易讀,避免復(fù)復(fù)雜邏輯4、建立測(cè)試用用例分層架構(gòu)構(gòu),并堅(jiān)守測(cè)試用例的層層次結(jié)構(gòu)測(cè)試用例=測(cè)試流程模板板+測(cè)試數(shù)據(jù)測(cè)試流程模板板=測(cè)試流程構(gòu)件件的排列測(cè)試流程構(gòu)件件=測(cè)試流程步驟驟的排列測(cè)試流程步驟驟=界面交互細(xì)節(jié)節(jié)CallSeleniumLibraryRFS基本使用變量和結(jié)果驗(yàn)驗(yàn)證使用變量使用變量來(lái)實(shí)實(shí)現(xiàn)測(cè)試目標(biāo)標(biāo)可變使用變量使用變量來(lái)實(shí)實(shí)現(xiàn)測(cè)試目標(biāo)標(biāo)可變運(yùn)行時(shí)可以指指定變量取值值切換不同環(huán)環(huán)境使用變量可以使用變量量來(lái)獲得界面面返回值,用用于驗(yàn)證需要注意關(guān)鍵鍵詞里面的返返回值變量只只在關(guān)鍵詞之之內(nèi)有效,可以通過(guò)如下下關(guān)鍵詞來(lái)提提升變量的可可見(jiàn)范圍,但但是最好只提提升到Test級(jí)別,因?yàn)闇y(cè)測(cè)試用例最好好是相互獨(dú)立立的SetGlobalVariableSetSuiteVariableSetTestVariable常用關(guān)鍵字驗(yàn)證頁(yè)面是否否包含相應(yīng)結(jié)結(jié)果PagePageShould(Not)ContainButtonPageShould(Not)ContainCheckboxPageShould(Not)ContainElementPageShould(Not)ContainImagePageShould(Not)ContainLinkPageShould(Not)ContainListPageShould(Not)ContainRadioButtonPageShould(Not)ContainTextfieldLocation&TitleLocationShouldBeLocationShouldContainTitleShouldBe常用關(guān)鍵字驗(yàn)證頁(yè)面是否否包含相應(yīng)結(jié)結(jié)果TextCurrentFrameContainsPageShouldContainPageShouldNotContainTextfieldValueShouldBeElementElementShouldBeDisabledElementShouldBeEnabledElementShouldBeVisibleElementShouldContainElementShouldNotBeVisibleElementTextShouldBe常用關(guān)鍵字驗(yàn)證頁(yè)面是否否包含相應(yīng)結(jié)結(jié)果ListListSelectionShouldBeListShouldHaveNoSelectionsCheckboxCheckboxShouldBeSelectedCheckboxShouldNotBeSelectedRadioButtonRadioButtonShouldBeSetToRadioButtonShouldNotBeSelected常用關(guān)鍵字驗(yàn)證頁(yè)面是否否包含相應(yīng)結(jié)結(jié)果TableTableCellShouldContainTableColumnShouldContainTableFooterShouldContainTableHeaderShouldContainTableRowShouldContainTableShouldContainTextfieldShouldContainXpathXpathShouldMatchXTimesDBLibrary1、下載DBLibrary:http://franz-see.github.io/Robotframework-Database-Library/2、安裝pythonsetup.pyinstall3、導(dǎo)入庫(kù):DatabaseLibrary4、安裝MySQLInterface/petehunt/PyMySQLDBLibraryConnectToDatabaseUsingCustomParamsDisconnectFromDatabaseQueryExecuteSqlStringRowCountIsEqualToXTableMustExistCheckIfExistsInDatabaseRFS基本使用數(shù)據(jù)驅(qū)動(dòng)數(shù)據(jù)驅(qū)動(dòng)可以利用Template實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)動(dòng)創(chuàng)建一個(gè)Template新建一個(gè)關(guān)鍵鍵字LoginTemplate引用Template注意:用例中如果使使用了這個(gè)template,那么用例步步驟里面就只只用填寫(xiě)傳遞遞的參數(shù)就可可以了RFS基本使用RFS中的編程分支與流程控控制常用關(guān)鍵字RunKeywordIfRunKeywordIfTestPassed/Failed(onlyforteardown)SetVariableIf常用關(guān)鍵字EvaluateRFS基本使用自定義關(guān)鍵字字使用Python開(kāi)發(fā)自定義關(guān)關(guān)鍵字我們來(lái)開(kāi)發(fā)一一個(gè)產(chǎn)生隨機(jī)機(jī)數(shù)的庫(kù)1、新建一個(gè)文文件:MyLibrary.py引用定義關(guān)鍵鍵字1、把它放到項(xiàng)項(xiàng)目文件夾下下2、導(dǎo)入自己的的庫(kù)MyLibrary.py使用自己的庫(kù)庫(kù)產(chǎn)生4到10的隨機(jī)數(shù)Content驗(yàn)收測(cè)試驅(qū)動(dòng)動(dòng)開(kāi)發(fā)概述工具簡(jiǎn)介與環(huán)環(huán)境搭建RobotFramework+Selenium使用持續(xù)集成BDD簡(jiǎn)介與lettuce持續(xù)集成(CI)持續(xù)集成是一一種軟件開(kāi)發(fā)實(shí)踐踐,即團(tuán)隊(duì)開(kāi)發(fā)發(fā)成員經(jīng)常集集成他們的工工作,通常每每個(gè)成員每天天至少集成一一次,也就意意味著每天可可能會(huì)發(fā)生多多次集成。每每次集成都通通過(guò)自動(dòng)化的的構(gòu)建(包括括編譯,發(fā)布布,自動(dòng)化測(cè)試)來(lái)驗(yàn)證,從而而盡快地發(fā)現(xiàn)現(xiàn)集成錯(cuò)誤。。許多團(tuán)隊(duì)發(fā)發(fā)現(xiàn)這個(gè)過(guò)程程可以大大減減少集成的問(wèn)問(wèn)題,讓團(tuán)隊(duì)隊(duì)能夠更快的的開(kāi)發(fā)內(nèi)聚的軟件。安裝Jenkins打開(kāi)Jenkinshttp://localhost:8080添加節(jié)點(diǎn)選擇系統(tǒng)管理理管理節(jié)點(diǎn)添加節(jié)點(diǎn)新建節(jié)點(diǎn)填入節(jié)點(diǎn)名稱(chēng)稱(chēng)添加節(jié)點(diǎn)#ofexecutors:如果使用RF的話(huà)必須填1RemoteFSroot:遠(yuǎn)程機(jī)的工工作目錄Launchme

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論