![講義文稿測(cè)試書_第1頁](http://file4.renrendoc.com/view/d637331cde224f712eebd7de7fa3db8a/d637331cde224f712eebd7de7fa3db8a1.gif)
![講義文稿測(cè)試書_第2頁](http://file4.renrendoc.com/view/d637331cde224f712eebd7de7fa3db8a/d637331cde224f712eebd7de7fa3db8a2.gif)
![講義文稿測(cè)試書_第3頁](http://file4.renrendoc.com/view/d637331cde224f712eebd7de7fa3db8a/d637331cde224f712eebd7de7fa3db8a3.gif)
![講義文稿測(cè)試書_第4頁](http://file4.renrendoc.com/view/d637331cde224f712eebd7de7fa3db8a/d637331cde224f712eebd7de7fa3db8a4.gif)
![講義文稿測(cè)試書_第5頁](http://file4.renrendoc.com/view/d637331cde224f712eebd7de7fa3db8a/d637331cde224f712eebd7de7fa3db8a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
RobotFramework+Selenium2/WebDriver測(cè)試技術(shù)培訓(xùn)@吳穹AdamRobotFramework+Selenium2/WebDriver測(cè)試技術(shù)培訓(xùn)@吳穹Adam?2011 AgileanCopyrightReserved2基本概念A(yù)genda?2011 AgileanCopyrightReserved2基本概念A(yù)genda?定義一種統(tǒng)一的方式來書寫和組織測(cè)試用例(測(cè)試步驟,測(cè)試數(shù)據(jù)與期待返回值);??定義一種統(tǒng)一的方式來書寫和組織測(cè)試用例(測(cè)試步驟,測(cè)試數(shù)據(jù)與期待返回值);????2011 AgileanCopyrightReserved3測(cè)試框架的職責(zé)?2011 AgileanCopyrightReserved4Robot?2011 AgileanCopyrightReserved4RobotFramework方案概要????????易于使用,采用表格式語法,統(tǒng)一測(cè)試用例格式;????????易于使用,采用表格式語法,統(tǒng)一測(cè)試用例格式;支持變量;支持創(chuàng)建基于數(shù)據(jù)驅(qū)動(dòng)的測(cè)試用例。結(jié)果報(bào)告和日志采用HTML格式,易于閱讀;平臺(tái)、應(yīng)用無關(guān);功能全面,支持WEB測(cè)試(Selenium)、JavaGUI啟動(dòng)線程、終端、SSH等;API,用戶可以自定義的基于Python或者Java的測(cè)試庫;XML的輸出文件;易于與版本管理集成;????2011 AgileanCopyrightReserved5RobotFramework的特性DBBuiltin?DBBuiltin?2011 AgileanCopyrightReserved6RobotFramework?基本概念?2011 AgileanCopyrightReserved7安裝Agenda?基本概念?2011 AgileanCopyrightReserved7安裝Agenda?運(yùn)行python-2.7.1.msi)加入PathPython2.8-win32-unicode--py27.exe,robotframework-2.6.3.tar????運(yùn)行python-2.7.1.msi)加入PathPython2.8-win32-unicode--py27.exe,robotframework-2.6.3.tar???解壓到本地用管理員帳戶打開一個(gè)cmd在cmd中執(zhí)行,pythonsetup.pyinstallrobotframework-ride-0.39.1.win32.exerobotframework-selenium2library-0.5.2.win32.exe替換[PythonDir]\Lib\site-packages\Selenium2Library的內(nèi)容執(zhí)行[PythonDir]\Scripts\ride.py??2011 AgileanCopyrightReserved8安裝?在[PythonDir]\Lib\site-packages\robot\utils下的encoding.py文件中,找到def_get_output_encoding():原來的編碼是’cp437’cp936’(簡(jiǎn)體中將其改成’文,gbk)。?2011 Agilean?在[PythonDir]\Lib\site-packages\robot\utils下的encoding.py文件中,找到def_get_output_encoding():原來的編碼是’cp437’cp936’(簡(jiǎn)體中將其改成’文,gbk)。?2011 AgileanCopyrightReserved9設(shè)置中文支持?需要以管理員身份運(yùn)行IE,將所有四個(gè)區(qū)域的“啟用保護(hù)模式”選項(xiàng)清除,否則WebDriver會(huì)報(bào)這個(gè)錯(cuò)誤?2011 AgileanCopyrightReserved?需要以管理員身份運(yùn)行IE,將所有四個(gè)區(qū)域的“啟用保護(hù)模式”選項(xiàng)清除,否則WebDriver會(huì)報(bào)這個(gè)錯(cuò)誤?2011 AgileanCopyrightReserved10IE8設(shè)置??基本概念安裝?2011 AgileanCopyrightReserved11??基本概念安裝?2011 AgileanCopyrightReserved11創(chuàng)建測(cè)試用例Agenda???測(cè)試項(xiàng)目可以目錄或文件存儲(chǔ)格式可以用TXT,TSV或HTML???測(cè)試項(xiàng)目可以目錄或文件存儲(chǔ)格式可以用TXT,TSV或HTMLTXT,這樣便于管理?2011 AgileanCopyrightReserved12創(chuàng)建測(cè)試項(xiàng)目?測(cè)試套也可以選擇是文件還是目錄?2011 AgileanCopyrightReserved13創(chuàng)建測(cè)試套?測(cè)試套也可以選擇是文件還是目錄?2011 AgileanCopyrightReserved13創(chuàng)建測(cè)試套?2011 AgileanCopyrightReserved14創(chuàng)建測(cè)試用例?2011 AgileanCopyrightReserved14創(chuàng)建測(cè)試用例?2011 AgileanCopyrightReserved15?2011 AgileanCopyrightReserved15關(guān)系總結(jié)?測(cè)試庫提供針對(duì)特定應(yīng)用的關(guān)鍵詞?2011 AgileanCopyrightReserved?測(cè)試庫提供針對(duì)特定應(yīng)用的關(guān)鍵詞?2011 AgileanCopyrightReserved16添加測(cè)試庫??資源提供定制公用關(guān)鍵詞的能力注意:資源也需要引用用到的Library?2011 AgileanCopyrightReserved17添加資源??資源提供定制公用關(guān)鍵詞的能力注意:資源也需要引用用到的Library?2011 AgileanCopyrightReserved17添加資源?2011 AgileanCopyrightReserved18關(guān)系總結(jié)?2011 AgileanCopyrightReserved18關(guān)系總結(jié)?2011 AgileanCopyrightReserved19增加自定義關(guān)鍵詞?2011 AgileanCopyrightReserved19增加自定義關(guān)鍵詞?2011 AgileanCopyrightReserved20增加自定義關(guān)鍵詞?2011 AgileanCopyrightReserved20增加自定義關(guān)鍵詞?F5可以搜索關(guān)鍵詞紅色表明需要輸入?yún)?shù)?2011 AgileanCopyrightReserved21增加自定義關(guān)鍵詞?F5可以搜索關(guān)鍵詞紅色表明需要輸入?yún)?shù)?2011 AgileanCopyrightReserved21增加自定義關(guān)鍵詞?測(cè)試用例用到的資源,需要在測(cè)試套里面直接引用?2011 AgileanCopyrightReserved22?測(cè)試用例用到的資源,需要在測(cè)試套里面直接引用?2011 AgileanCopyrightReserved22在測(cè)試用例里面引用資源??F5可以查找關(guān)鍵詞匹配的關(guān)鍵詞會(huì)顯示為藍(lán)色?2011 Agilean??F5可以查找關(guān)鍵詞匹配的關(guān)鍵詞會(huì)顯示為藍(lán)色?2011 AgileanCopyrightReserved23引用自定義關(guān)鍵詞???基本概念安裝創(chuàng)建測(cè)試用例?2011 Agilean???基本概念安裝創(chuàng)建測(cè)試用例?2011 AgileanCopyrightReserved24執(zhí)行測(cè)試Agenda?2011 AgileanCopyrightReserved?2011 AgileanCopyrightReserved25執(zhí)行測(cè)試??測(cè)試用例可以標(biāo)記多個(gè)Tag可以按Tag來執(zhí)行或跳過用例?2011 AgileanCopyrightReserved??測(cè)試用例可以標(biāo)記多個(gè)Tag可以按Tag來執(zhí)行或跳過用例?2011 AgileanCopyrightReserved26按Tag執(zhí)行??測(cè)試日志按樹形組織可自動(dòng)提供錯(cuò)誤步驟的屏幕截圖?2011 Agilean??測(cè)試日志按樹形組織可自動(dòng)提供錯(cuò)誤步驟的屏幕截圖?2011 AgileanCopyrightReserved27測(cè)試日志?拷屏|filename=None將頁面內(nèi)容加入Log?LogLogLogLocationSource|loglevel=INFO?拷屏|filename=None將頁面內(nèi)容加入Log?LogLogLogLocationSource|loglevel=INFOTitle?Log特定信息(BuiltInLibrary)?Log變量(BuiltInLibrary)?2011 AgileanCopyrightReserved28其他可用調(diào)試手段?底色表示成功與失敗?2011 AgileanCopyrightReserved29?底色表示成功與失敗?2011 AgileanCopyrightReserved29測(cè)試報(bào)告??建立測(cè)試用例查看測(cè)試報(bào)告?2011 Agilean??建立測(cè)試用例查看測(cè)試報(bào)告?2011 AgileanCopyrightReserved30練習(xí)一????基本概念安裝創(chuàng)建測(cè)試用例執(zhí)行測(cè)試?????基本概念安裝創(chuàng)建測(cè)試用例執(zhí)行測(cè)試?2011 AgileanCopyrightReserved31使用Selenium2LibraryAgenda?SeleniumLibrary將WebDriver與RobotFramework連接起來提供了非常多的內(nèi)置關(guān)鍵詞可以使用F5或以下鏈接來學(xué)習(xí)???2011 Agilean?SeleniumLibrary將WebDriver與RobotFramework連接起來提供了非常多的內(nèi)置關(guān)鍵詞可以使用F5或以下鏈接來學(xué)習(xí)???2011 AgileanCopyrightReserved32內(nèi)置關(guān)鍵詞?Selenium2Lib提供了與瀏覽器交互的關(guān)鍵詞:BrowserMaximizeBrowserGoToGoBackReload?Selenium2Lib提供了與瀏覽器交互的關(guān)鍵詞:BrowserMaximizeBrowserGoToGoBackReloadPageWindowCloseCloseCloseWindowBrowserAllBrowsers?2011 AgileanCopyrightReserved33瀏覽器操作?點(diǎn)擊ClickClickClickClickButton|locatorElement|locatorImage|locatorLink|?點(diǎn)擊ClickClickClickClickButton|locatorElement|locatorImage|locatorLink|locatorElement|locatorIE中,Click不起作用,可以用如下命令來替代?PressKey|<id>|\\13或\\10?2011 AgileanCopyrightReserved34常用關(guān)鍵詞?Locator或name來用定位界面元素XPath=或Dom=來開頭來定位,強(qiáng)烈建議強(qiáng)制要求開發(fā)為所有需要交互的界面元素設(shè)定id,所以,locator最好以id=,name=,identifier=??Locator或name來用定位界面元素XPath=或Dom=來開頭來定位,強(qiáng)烈建議強(qiáng)制要求開發(fā)為所有需要交互的界面元素設(shè)定id,所以,locator最好以id=,name=,identifier=??2011 AgileanCopyrightReserved35定位元素?也可以應(yīng)用AssignIdTo?也可以應(yīng)用AssignIdToElement關(guān)鍵詞來為沒有ID的元素指定一個(gè)ID?2011 AgileanCopyrightReserved36定位元素?有時(shí),需要先進(jìn)入一個(gè)frame或iframe再定位一個(gè)元素,這樣效率更高,可以使用如下兩個(gè)關(guān)鍵詞或iframeSelectFrame|?有時(shí),需要先進(jìn)入一個(gè)frame或iframe再定位一個(gè)元素,這樣效率更高,可以使用如下兩個(gè)關(guān)鍵詞或iframeSelectFrame|locatorframe或iframe?UnselectFrame?2011 AgileanCopyrightReserved37定位元素?可見性問題要求交互的元素必須是可見的,其判定邏輯如下:???????可見性問題要求交互的元素必須是可見的,其判定邏輯如下:???????Select是否可見?;Area,判斷包含它的Map是否可見?對(duì)于Map,判斷MapImage是否可見?hiddeninput不可見;NoScript不可見;hiddenvisibility不可見;displayed=‘none’,則元素不可見;??2011 AgileanCopyrightReserved38定位元素?可見性問題IE有一個(gè)缺陷使得即便display=“none”的元素依然可見,/explorer/ienondisappear?可見性問題IE有一個(gè)缺陷使得即便display=“none”的元素依然可見,/explorer/ienondisappearcontentbugPIE/index.htm?display=‘none’或任何祖先元素的display=‘none’,則元素不可見;?2011 AgileanCopyrightReserved39定位元素?輸入InputPassword|locator|textInputText|?輸入InputPassword|locator|textInputText|locator|text更新?PressKey|<id>|\\13或\\10?2011 AgileanCopyrightReserved40常用關(guān)鍵詞?按鍵PressKey|locator|key例子PressKey|text_field?按鍵PressKey|locator|key例子PressKey|text_fieldPressKey|login_button特殊編碼||q|\\13|#ASCIIcodefor????????43:44:45:56:57:59:61:Keys.ADD,Keys.SUBTRACT,Keys.DECIMAL,Keys.DIVIDE,Keys.EQUALS,?????????0:8:9:Keys.NULL,Keys.BACK_SPACE,Keys.TAB,10:13:24:27:32:42:Keys.RETURN,Keys.ENTER,Keys.CANCEL,Keys.ESCAPE,Keys.SPACE,127:Keys.DELETE?2011 AgileanCopyrightReserved41常用關(guān)鍵詞?可以使用FireFoxFirebug或IE8來輔助定位?2011 AgileanCopyrightReserved42?可以使用FireFoxFirebug或IE8來輔助定位?2011 AgileanCopyrightReserved42定位元素?創(chuàng)建更多關(guān)鍵詞?2011 AgileanCopyrightReserved43?創(chuàng)建更多關(guān)鍵詞?2011 AgileanCopyrightReserved43更新例子?擴(kuò)展測(cè)試用例?2011 AgileanCopyrightReserved44?擴(kuò)展測(cè)試用例?2011 AgileanCopyrightReserved44更新例子?驗(yàn)證頁面是否包含相應(yīng)結(jié)果Page????????PagePage?驗(yàn)證頁面是否包含相應(yīng)結(jié)果Page????????PagePagePagePagePagePagePagePageShould(Not)ContainShould(Not)ContainShould(Not)ContainButtonElementImageLinkListRadioButtonTextfield&Title???LocationShouldLocationShouldTitleShouldBeBeContain?2011 AgileanCopyrightReserved45檢查結(jié)果?驗(yàn)證頁面是否包含相應(yīng)結(jié)果Text????CurrentFrameContainsPageShould?驗(yàn)證頁面是否包含相應(yīng)結(jié)果Text????CurrentFrameContainsPageShouldContainPageShouldNotContainTextfieldValueShouldBe??????ElementElementElementElementElementElementShouldShouldShouldShouldShouldBeBeBeDisabledEnabledVisibleContainNotBeVisibleTextShouldBe?2011 AgileanCopyrightReserved46檢查結(jié)果?驗(yàn)證頁面是否包含相應(yīng)結(jié)果ListListSelectionShouldBeListShouldHave?驗(yàn)證頁面是否包含相應(yīng)結(jié)果ListListSelectionShouldBeListShouldHaveNoSelectionsCheckboxCheckboxShouldBeSelectedCheckboxShouldNotRadioButtonBeSelected??RadioRadioButtonButtonShouldShouldBeSetNotBeToSelected?2011 AgileanCopyrightReserved47檢查結(jié)果?驗(yàn)證頁面是否包含相應(yīng)結(jié)果–Table???????TableTableTableTable?驗(yàn)證頁面是否包含相應(yīng)結(jié)果–Table???????TableTableTableTableTableTableCellShouldContainColumnFooterHeaderShouldContainContainContainRowShouldContainShouldContainTextfieldShouldContain–Xpath?XpathShouldMatchXTimes?2011 AgileanCopyrightReserved48檢查結(jié)果??默認(rèn)情況下,Selenium2會(huì)自動(dòng)等待頁面加載完成對(duì)于頁面AJAX可以使用如下等待頁面的關(guān)鍵詞:WaitWaitWaitForCondition|??默認(rèn)情況下,Selenium2會(huì)自動(dòng)等待頁面加載完成對(duì)于頁面AJAX可以使用如下等待頁面的關(guān)鍵詞:WaitWaitWaitForCondition|condition|timeout=None|error=NoneUntilPageContains|text|timeout=None|error=NoneUntilPageContainsElement|locator|timeout?一種調(diào)試時(shí)可以使用,但是不應(yīng)該留下來的SleepxSleep關(guān)鍵詞是RobotFrameworkBuiltInLibrary提供的,In.html?r=2.6.1?2011 AgileanCopyrightReserved49等待頁面加載?Selenium2Lib提供了和其他界面元素交互的關(guān)鍵詞:–Element???Focus聚焦Simulate模擬時(shí)間觸發(fā)OpenContextMenu–List??Selenium2Lib提供了和其他界面元素交互的關(guān)鍵詞:–Element???Focus聚焦Simulate模擬時(shí)間觸發(fā)OpenContextMenu–List???SelectAllFromListSelectFromListUnselectFromListCheckboxSelectCheckboxUnselectCheckboxRadioButtonSelectRadioButtonFormSubmitForm ?ChooseFile(ForFileUpload) ?2011 AgileanCopyrightReserved50和其他界面元素交互?更新測(cè)試用例?2011 AgileanCopyrightReserved51?更新測(cè)試用例?2011 AgileanCopyrightReserved51練習(xí)二?????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary?????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary?2011 AgileanCopyrightReserved52數(shù)據(jù)驅(qū)動(dòng)的測(cè)試與測(cè)試用例的架構(gòu)Agenda?要做到流程和數(shù)據(jù)的分離id不算數(shù)據(jù),不應(yīng)分離?2011 Agilean?要做到流程和數(shù)據(jù)的分離id不算數(shù)據(jù),不應(yīng)分離?2011 AgileanCopyrightReserved53?增加一個(gè)新的測(cè)試用例這樣好嗎??2011 AgileanCopyrightReserved54更新例子?增加一個(gè)新的測(cè)試用例這樣好嗎??2011 AgileanCopyrightReserved54更新例子??要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余?2011 Agilean??要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余?2011 AgileanCopyrightReserved55??要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余?2011 Agilean??要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余?2011 AgileanCopyrightReserved56???要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余避免復(fù)雜邏輯????要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余避免復(fù)雜邏輯?2011 AgileanCopyrightReserved57???要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余避免復(fù)雜邏輯????要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余避免復(fù)雜邏輯?2011 AgileanCopyrightReserved58???要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余測(cè)試用例應(yīng)盡量簡(jiǎn)單易讀,避免復(fù)雜邏輯問題:“登錄”Keyword應(yīng)該在這里嗎??2011 Agilean???要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余測(cè)試用例應(yīng)盡量簡(jiǎn)單易讀,避免復(fù)雜邏輯問題:“登錄”Keyword應(yīng)該在這里嗎??2011 AgileanCopyrightReserved59????要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余建立測(cè)試用例分層架構(gòu),并堅(jiān)守????要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余建立測(cè)試用例分層架構(gòu),并堅(jiān)守?2011 AgileanCopyrightReserved60測(cè)試流程步驟=界面交互細(xì)節(jié)?2011 AgileanCopyrightReserved61測(cè)試流程構(gòu)件=測(cè)試流程步驟的排列測(cè)試流程模板=測(cè)試流程構(gòu)件的排列測(cè)試用例測(cè)試流程步驟=界面交互細(xì)節(jié)?2011 AgileanCopyrightReserved61測(cè)試流程構(gòu)件=測(cè)試流程步驟的排列測(cè)試流程模板=測(cè)試流程構(gòu)件的排列測(cè)試用例=+測(cè)試數(shù)據(jù)測(cè)試用例的層次架構(gòu)(實(shí)例)?分層測(cè)試用例架構(gòu)?2011 AgileanCopyrightReserved62?分層測(cè)試用例架構(gòu)?2011 AgileanCopyrightReserved62練習(xí)三??????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary??????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary數(shù)據(jù)驅(qū)動(dòng)的測(cè)試與測(cè)試用例的架構(gòu)?2011 AgileanCopyrightReserved63使用變量Agenda?使用變量來實(shí)現(xiàn)測(cè)試目標(biāo)可變?2011 AgileanCopyrightReserved64使用變量?使用變量來實(shí)現(xiàn)測(cè)試目標(biāo)可變?2011 AgileanCopyrightReserved64使用變量?使用變量來實(shí)現(xiàn)測(cè)試目標(biāo)可變?2011 AgileanCopyrightReserved65?使用變量來實(shí)現(xiàn)測(cè)試目標(biāo)可變?2011 AgileanCopyrightReserved65使用變量?使用變量來實(shí)現(xiàn)測(cè)試目標(biāo)可變?2011 AgileanCopyrightReserved66?使用變量來實(shí)現(xiàn)測(cè)試目標(biāo)可變?2011 AgileanCopyrightReserved66使用變量?可以使用變量來獲得界面返回值,用于驗(yàn)證Test級(jí)別,因?yàn)闇y(cè)試用例最好是相互獨(dú)立的?2011 AgileanCopyrightReserved67?可以使用變量來獲得界面返回值,用于驗(yàn)證Test級(jí)別,因?yàn)闇y(cè)試用例最好是相互獨(dú)立的?2011 AgileanCopyrightReserved67使用變量?相關(guān)關(guān)鍵詞有:Page????GetGetGetGetTitleSource?相關(guān)關(guān)鍵詞有:Page????GetGetGetGetTitleSourceXpathCount???GetGetGetElementAttributeValueText(AddedByAdamWu)LinkGetAllLinks?2011 AgileanCopyrightReserved68獲取頁面信息?相關(guān)關(guān)鍵詞有:–TableGetListTableCell?????相關(guān)關(guān)鍵詞有:–TableGetListTableCell?????GetGetGetGetGetListItemsSelectedListListListListLabelLabelsValueValues?2011 AgileanCopyrightReserved69獲取頁面信息???????基本概念安裝執(zhí)行測(cè)試使用Selenium???????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary數(shù)據(jù)驅(qū)動(dòng)的測(cè)試與測(cè)試用例的架構(gòu)使用變量?2011 AgileanCopyrightReserved70設(shè)置TimeoutAgenda?Suite和Test都可以設(shè)定Timeout,這限定了測(cè)試用例的最長(zhǎng)執(zhí)行時(shí)間,因此,需要預(yù)留合適的時(shí)間,否則,可能導(dǎo)致測(cè)試不穩(wěn)定?2011 AgileanCopyrightReserved71?Suite和Test都可以設(shè)定Timeout,這限定了測(cè)試用例的最長(zhǎng)執(zhí)行時(shí)間,因此,需要預(yù)留合適的時(shí)間,否則,可能導(dǎo)致測(cè)試不穩(wěn)定?2011 AgileanCopyrightReserved71設(shè)置Timeout?Timeout也可以通過如下Keyword來設(shè)置(GetSeleniumTimeoutSetSeleniumTimeout?Timeout也可以通過如下Keyword來設(shè)置(GetSeleniumTimeoutSetSeleniumTimeoutSelenium執(zhí)行速度?GetSetSeleniumSeleniumSpeedSpeed?2011 AgileanCopyrightReserved72設(shè)置Timeout(需要被更新)?????要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余?????要做到流程和數(shù)據(jù)的分離通過不斷抽象,消除冗余建立測(cè)試用例分層架構(gòu),并堅(jiān)守自動(dòng)化測(cè)試用例必須非常健壯,避免誤報(bào)?2011 AgileanCopyrightReserved73????????基本概念安裝執(zhí)行測(cè)試????????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary數(shù)據(jù)驅(qū)動(dòng)的測(cè)試與測(cè)試用例的架構(gòu)使用變量設(shè)置Timeout?2011 AgileanCopyrightReserved74敏捷測(cè)試過程AgendaOwnerScrumDevelopers,Testers,..+Manager/LeadReleaseOwnerScrumDevelopers,Testers,..+Manager/LeadReleasePlanMeetingSprintReviewReleaseWorkshopSprintPlanMeetingSprint?2011 AgileanCopyrightReserved75ScrumProcessFramework?2011 AgileanCopyrightReserved76?2011 AgileanCopyrightReserved76迭代過程中的測(cè)試(A-TDD)????????基本概念安裝執(zhí)行測(cè)試????????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary數(shù)據(jù)驅(qū)動(dòng)的測(cè)試與測(cè)試用例的架構(gòu)使用變量設(shè)置Timeout?2011 AgileanCopyrightReserved77敏捷測(cè)試過程Agenda?????????基本概念安裝?????????基本概念安裝執(zhí)行測(cè)試使用SeleniumLibrary數(shù)據(jù)驅(qū)動(dòng)的測(cè)試與測(cè)試用例的架構(gòu)使用變量設(shè)置Timeout敏捷測(cè)試過程?2011 AgileanCopyrightReserved78進(jìn)階問題Agenda?2011 AgileanCopyrightReserved79選擇式輸入與日期處理進(jìn)階問題?2011 AgileanCopyrightReserved79選擇式輸入與日期處理進(jìn)階問題?在界面當(dāng)中,有許多信息使用選擇方式來輸入,如年齡,日期,密碼等等;div層,就是看到的“下拉框”??梢杂萌缦路绞街苯淤x值來進(jìn)行選擇:??–inputtext?在界面當(dāng)中,有許多信息使用選擇方式來輸入,如年齡,日期,密碼等等;div層,就是看到的“下拉框”??梢杂萌缦路绞街苯淤x值來進(jìn)行選擇:??–inputtext//select[@id='registeredAgePeriod']03?2011 AgileanCopyrightReserved80選擇式輸入與日期處理?對(duì)于有些日期輸入框,也可以直接調(diào)用JavaScriptwindow.一定要寫不能省略?2011 AgileanCopyrightReserved81?對(duì)于有些日期輸入框,也可以直接調(diào)用JavaScriptwindow.一定要寫不能省略?2011 AgileanCopyrightReserved81選擇式輸入與日期處理??很多時(shí)候輸入的日期值,需要根據(jù)當(dāng)前日期計(jì)算可以利用BuildInLibrary里面的GetTime來解決?2011 AgileanCopyrightReserved82選擇式輸入與日期處理??很多時(shí)候輸入的日期值,需要根據(jù)當(dāng)前日期計(jì)算可以利用BuildInLibrary里面的GetTime來解決?2011 AgileanCopyrightReserved82選擇式輸入與日期處理?日期處理??切換窗口Alert處理和模式對(duì)話框?2011 AgileanCopyrightReserved83?日期處理??切換窗口Alert處理和模式對(duì)話框?2011 AgileanCopyrightReserved83等待AJAX返回結(jié)果進(jìn)階問題??定位AJAX會(huì)動(dòng)態(tài)更新的頁面內(nèi)容定義一個(gè)等待動(dòng)態(tài)加載完成的關(guān)鍵詞?2011 AgileanCopyrightReserved84??定位AJAX會(huì)動(dòng)態(tài)更新的頁面內(nèi)容定義一個(gè)等待動(dòng)態(tài)加載完成的關(guān)鍵詞?2011 AgileanCopyrightReserved84等待AJAX返回結(jié)果?等待界面返回,可以利用BuiltInLibrary里面的WaitUntilKeywordSucceeds關(guān)鍵詞?2011 AgileanCopyrightReserved85等待AJAX返回結(jié)果?等待界面返回,可以利用BuiltInLibrary里面的WaitUntilKeywordSucceeds關(guān)鍵詞?2011 AgileanCopyrightReserved85等待AJAX返回結(jié)果??日期處理等待AJAX返回結(jié)果?Alert處理和模式對(duì)話框?2011 AgileanCopyrightReserved86??日期處理等待AJAX返回結(jié)果?Alert處理和模式對(duì)話框?2011 AgileanCopyrightReserved86切換窗口進(jìn)階問題?如果測(cè)試用例打開了多個(gè)窗口或多個(gè)Frame,可以用如下關(guān)鍵詞來進(jìn)行切換:?如果打開新窗口的時(shí)間不確定,可以結(jié)合WaitUntilKeywordSucceeds關(guān)鍵詞,以確保切換窗口成功?2011 AgileanCopyrightReserved87?如果測(cè)試用例打開了多個(gè)窗口或多個(gè)Frame,可以用如下關(guān)鍵詞來進(jìn)行切換:?如果打開新窗口的時(shí)間不確定,可以結(jié)合WaitUntilKeywordSucceeds關(guān)鍵詞,以確保切換窗口成功?2011 AgileanCopyrightReserved87切換窗口?另外,可以使用如下關(guān)鍵詞來獲取所有當(dāng)前打開窗口的信息,方便調(diào)試GetGetGetWindowIdentifiers?另外,可以使用如下關(guān)鍵詞來獲取所有當(dāng)前打開窗口的信息,方便調(diào)試GetGetGetWindowIdentifiersNamesTitles?2011 AgileanCopyrightReserved88切換窗口??????JQuery支持Flex支持Firefox??????JQuery支持Flex支持FirefoxProfiles支持日期處理等待AJAX返回結(jié)果切換窗口?2011 AgileanCopyrightReserved89Alert處理和模式對(duì)話框進(jìn)階問題?在Selenium2/IE中,模式對(duì)話框就和一個(gè)普通窗口一樣,只需用SelectWindow結(jié)合WaitUntilKeywordSucceeds切換過去即可,在模式對(duì)話框關(guān)閉之后再用SelectWindow結(jié)合WaitUntilKeywordSucceeds切換回主窗口即可?2011 Agilean?在Selenium2/IE中,模式對(duì)話框就和一個(gè)普通窗口一樣,只需用SelectWindow結(jié)合WaitUntilKeywordSucceeds切換過去即可,在模式對(duì)話框關(guān)閉之后再用SelectWindow結(jié)合WaitUntilKeywordSucceeds切換回主窗口即可?2011 AgileanCopyrightReserved90模式對(duì)話框的處理??Selenium會(huì)修改頁面JS代碼,所以不會(huì)有實(shí)際的彈出窗口否符合預(yù)期?其實(shí)這里ConfirmAction不會(huì)進(jìn)行點(diǎn)擊動(dòng)作,而只是會(huì)去獲取需要確認(rèn)的內(nèi)容,但是如果不調(diào)用ConfirmAction,后面就會(huì)報(bào)錯(cuò)了;而ChooseCancel??Selenium會(huì)修改頁面JS代碼,所以不會(huì)有實(shí)際的彈出窗口否符合預(yù)期?其實(shí)這里ConfirmAction不會(huì)進(jìn)行點(diǎn)擊動(dòng)作,而只是會(huì)去獲取需要確認(rèn)的內(nèi)容,但是如果不調(diào)用ConfirmAction,后面就會(huì)報(bào)錯(cuò)了;而ChooseCancelonNextConfirmation就是規(guī)定下一次Confirm選擇Cancel??2011 AgileanCopyrightReserved91Confirm的處理?Alert的處理?2011 AgileanCopyrightReserved92Alert的處理?Alert的處理?2011 AgileanCopyrightReserved92Alert的處理????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框?????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框?2011 AgileanCopyrightReserved93模擬Windows動(dòng)作SeleniumLibrary進(jìn)階?RobotFramework還有一個(gè)AutoItLibrary,Windows界面的關(guān)鍵詞,安裝方式如下:安裝PythonWindowsExtension(pywin32-需要本機(jī)管理員權(quán)限)之后,解壓AutoItLibrary-1.1.zip到任意目錄,然后在目錄下執(zhí)行?RobotFramework還有一個(gè)AutoItLibrary,Windows界面的關(guān)鍵詞,安裝方式如下:安裝PythonWindowsExtension(pywin32-需要本機(jī)管理員權(quán)限)之后,解壓AutoItLibrary-1.1.zip到任意目錄,然后在目錄下執(zhí)行??setup.pyinstall注意:–在Win7或WindowsServer上–以你的有管理員權(quán)限的用戶登錄?而不要直接用Administrator賬號(hào)登錄–要以管理員身份打開命令行窗口–再執(zhí)行setup.py?2011 AgileanCopyrightReserved94模擬Windows動(dòng)作?安裝之后需要將AutoItLibrary的兩個(gè)相關(guān)目錄的只讀限制清除,否則,使用RIDE時(shí)會(huì)拋異常;另外可能沒法SearchKeyword;?2011 AgileanCopyrightReserved?安裝之后需要將AutoItLibrary的兩個(gè)相關(guān)目錄的只讀限制清除,否則,使用RIDE時(shí)會(huì)拋異常;另外可能沒法SearchKeyword;?2011 AgileanCopyrightReserved95模擬Windows動(dòng)作?如果用Administrator執(zhí)行了setup.pyinstall,那么使用其他用戶使用AutoIt時(shí),會(huì)報(bào)這個(gè)錯(cuò)誤–––>>>Don'tthinkweneedtounregisterthe?如果用Administrator執(zhí)行了setup.pyinstall,那么使用其他用戶使用AutoIt時(shí),會(huì)報(bào)這個(gè)錯(cuò)誤–––>>>Don'tthinkweneedtounregistertheoldone...Traceback(mostrecentcalllast):File"C:\Python27\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py",line325,inRunScriptexeccodeObjectin main . dict File"C:\pathon2.7.1\AutoItLibrary-1.1\setup.py",line63,in<module>shutil.copyfile("3rdPartyTools/AutoIt/AutoItX3.dll",instFile)File"C:\Python27\lib\shutil.py",line81,incopyfilewithopen(src,'rb')asfsrc:IOError:[Errno2]Nosuchfileordirectory:'3rdPartyTools/AutoIt/AutoItX3.dll‘–––?這時(shí)需要?jiǎng)h除AutoItLibrary目錄,同時(shí)用regedt32情況注冊(cè)表里面所有和AutoIt項(xiàng)目的信息?2011 AgileanCopyrightReserved96模擬Windows動(dòng)作??使用時(shí)需要ImportAutoItLibrary關(guān)鍵詞列表請(qǐng)見–http://robotframework-??使用時(shí)需要ImportAutoItLibrary關(guān)鍵詞列表請(qǐng)見–http://robotframework-AutoItLibrary-1.0/doc/AutoItLibrary.html?2011 AgileanCopyrightReserved97模擬Windows動(dòng)作?????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框模擬Windows動(dòng)作?????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框模擬Windows動(dòng)作?2011 AgileanCopyrightReserved98String和Collection支持SeleniumLibrary進(jìn)階?RobotFramework內(nèi)置提供了StringLibrary–ReplaceString–ReplaceString?RobotFramework內(nèi)置提供了StringLibrary–ReplaceString–ReplaceStringUsi–ShouldBeLowercas–ShouldBeString–ShouldBeTitlecas–ShouldBeUppercas–ShouldNotBeStrin–SplitString–SplitStringFromR–SplitToLinesFetchFromLeftFetchFromRightGenerateRandomStringGetLineGetLineCountGetLinesContainingStringGetLinesMatchingPatternGetLinesMatchingRegexpGetSubstring?2011 AgileanCopyrightReserved99String支持?AppendToList·CombineLists·ConvertToList·CopyDictionaryDictionary··CopyList· CountValuesInList·CreateDictionariesShouldBeEqual·DictionaryShouldContainDictionary·Key·DictionaryShouldContainSubDictionaryShouldContainValue·DictionaryShouldNotContainKey·DictionaryShouldNotContainValue·GetDictionaryItems·GetDictionary?AppendToList·CombineLists·ConvertToList·CopyDictionaryDictionary··CopyList· CountValuesInList·CreateDictionariesShouldBeEqual·DictionaryShouldContainDictionary·Key·DictionaryShouldContainSubDictionaryShouldContainValue·DictionaryShouldNotContainKey·DictionaryShouldNotContainValue·GetDictionaryItems·GetDictionaryKeys·GetDictionaryValues·GetFromDictionary·GetFromListIntoList·GetIndexFromList· GetSliceFromList·InsertList·KeepInDictionary·ListShouldContainSub· ListShouldNotContain·ListShouldContainValueDuplicates·ListShouldNotContainValue·ListsShouldBeEqual·LogDictionary· LogList·RemoveFromDictionary·RemoveFromList·RemoveValuesFromList·ReverseList·SetListValue·SetToDictionary·SortList?2011 AgileanCopyrightReserved100Collection支持??????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框??????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框模擬Windows動(dòng)作?2011 AgileanCopyrightReserved101Cookie支持SeleniumLibrary進(jìn)階?Selenium2Lib提供了如下關(guān)鍵詞來操作Cookie:DeleteAllCookiesDeleteCookie?Selenium2Lib提供了如下關(guān)鍵詞來操作Cookie:DeleteAllCookiesDeleteCookieGetGetCookieValueCookies?2011 AgileanCopyrightReserved102Cookies操作???????日期處理返回結(jié)果切換窗口???????日期處理返回結(jié)果切換窗口Alert處理和模式對(duì)話框模擬Windows動(dòng)作和Collection支持Cookie支持?2011 AgileanCopyrightReserved103鼠標(biāo)動(dòng)作SeleniumLibrary進(jìn)階?Selenium2Lib提供了如下關(guān)鍵詞來操作鼠標(biāo):GetVerticalPositionGetHorizontalPosition?Selenium2Lib提供了如下關(guān)鍵詞來操作鼠標(biāo):GetVerticalPositionGetHorizontalPositionMouseMouseMouseMouseMouseMouseDownDownDownOutOverUpOnOnImageLink?2011 AgileanCopyrightReserved104Cookies操作??RegisterKeywordToRunOn??RegisterKeywordToRunOnFailure?Tag?2011 AgileanCopyrightReserved105失敗處理????Flex支持FirefoxProfiles支持RemoteLibraryDBLibrary?????Flex支持FirefoxProfiles支持RemoteLibraryDBLibrary?2011 AgileanCopyrightReserved106JQuery支持其他進(jìn)階話題?在用例中,將所有ImportLibrary|SeleniumLibrary都換成ImportLibrary|Selenium2Libr?在用例中,將所有ImportLibrary|SeleniumLibrary都換成ImportLib
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 10 Unit 2 You shouldn't be late(說課稿)-2024-2025學(xué)年外研版(一起)英語五年級(jí)上冊(cè)001
- 16 滑輪 說課稿-2023-2024學(xué)年科學(xué)六年級(jí)上冊(cè)青島版001
- 3 珍貴的淡水資源(說課稿)-2023-2024學(xué)年四年級(jí)科學(xué)下冊(cè)大象版
- 3 我不拖拉 第2課時(shí)(說課稿)-2023-2024學(xué)年道德與法治一年級(jí)下冊(cè)統(tǒng)編版
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 二 角的初步認(rèn)識(shí) 銳角和鈍角說課稿 西師大版
- 19《夜宿山寺》說課稿-2024-2025學(xué)年二年級(jí)上冊(cè)語文統(tǒng)編版
- 2023八年級(jí)道德與法治上冊(cè) 第四單元 維護(hù)國家利益 第八課 國家利益至上 第1框 國家好 大家才會(huì)好說課稿 新人教版
- 2024年八年級(jí)道德與法治下冊(cè) 第三單元 人民當(dāng)家作主 第五課 我國基本制度 第2框 根本政治制度說課稿 新人教版
- 2024年秋九年級(jí)歷史上冊(cè) 第一單元 古代亞非文明 第3課 古代印度說課稿2 新人教版001
- 2025北京建筑材料購貨合同
- 小學(xué)生必備古詩
- 人教版英語八年級(jí)上冊(cè)單詞默寫表
- SRE Google運(yùn)維解密(中文版)
- 綜合性學(xué)習(xí)公開課《我的語文生活》一等獎(jiǎng)?wù)n件
- IBM:中建八局ERP解決方案
- 高考語文復(fù)習(xí)高中語文文言文注釋集萃
- 初中歷史 教材分析與教學(xué)策略 課件
- 幼兒剪紙-打印版
- 中小學(xué)2021年秋季開學(xué)第一課手心班會(huì)圖文精品
- 如何提高和加強(qiáng)人力資源隊(duì)伍的建設(shè)
- 四川省綿陽市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
評(píng)論
0/150
提交評(píng)論