RFS自動化測試培訓課件_第1頁
RFS自動化測試培訓課件_第2頁
RFS自動化測試培訓課件_第3頁
RFS自動化測試培訓課件_第4頁
RFS自動化測試培訓課件_第5頁
已閱讀5頁,還剩215頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

/p/selenium/downloads/list環境搭建在線安裝安裝Python,使用Python8環境搭建離線安裝1、/pypi/decorator/2、/pypi/robotframework/#downloads3、/pypi/robotframework-selenium2library/1.5.04、/pypi/selenium/2.40.0環境搭建離線安裝9中文支持在[PythonDir]\Lib\site-packages\robot\utils下的encodingsniffer.py文件中,找到DEFAULT_OUTPUT_ENCODING='cp437':原來的編碼是’cp437’將其改成’cp936’(簡體中文,gbk)。中文支持在[PythonDir]\Lib\site-pack10*FireBug安裝*FireBug安裝11FireBug入門使用FireBug入門使用12Content工具簡介與環境搭建RobotFramework+Selenium使用持續集成BDD簡介與lettuceContent13RFS基本使用入門實例RFS基本使用入門實例14*新建項目*新建項目15*新建測試套件123*新建測試套件12316*新建測試用例132*新建測試用例13217*添加測試庫132在測試套件中添加庫注意區分大小寫*添加測試庫132在測試套件中添加庫18*編寫測試用例打開禪道登錄頁面輸入用戶名輸入密碼單擊登錄按鈕關鍵字*編寫測試用例打開禪道登錄頁面關鍵字19*運行測試*運行測試20*運行測試*運行測試21*查看報告*查看報告22*查看日志*查看日志2324*RFS基本使用元素定位24*RFS基本使用元素定位24Selenium支持的定位方式最好以id來定位,如果沒有id可以使用Assign

Id

To

Element關鍵字來為元素分配一個idSelenium支持的定位方式最好以id來定位,如果沒有id25*Xpath*Xpath26*Xpath1通過絕對路徑定位元素xpath=/html/body/form/input通過相對路徑定位元素xpath=//input使用索引來定位元素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’]*Xpath1通過絕對路徑定位元素27*Xpath2使用屬性名稱定為元素xpath=//input[@name]使用部分屬性值定位元素使用值來匹配任意屬性及元素//input[@*=’username’]*Xpath2使用屬性名稱定為元素28*切換到新的窗口有時,瀏覽器打開了兩個窗口,要跳轉到新的窗口才能操作元素進入新的窗口SelectWindow new返回到主窗口SelectWindow main注意:切換到新窗口后,關閉窗口,必須要有一步返回到主頁面打開3和3個以上的窗口:@{x} listwindows 首先得到所有窗口的句柄列表selectwindow @{x}[2] 切換到第三個窗口*切換到新的窗口有時,瀏覽器打開了兩個窗口,要跳轉到新的窗口29*進入一個frame或iframe有時,需要先進入一個frame或iframe再定位一個元素,這樣效率更高,可以使用如下兩個關鍵詞進入一個frame或iframeSelectFrame|locator回到最上層frame或iframeUnselectFrame*進入一個frame或iframe有時,需要先進入一個fra30*js定位:(js)

js點擊executejavascript document.querySelectorAll('css')[0].click()移動div中內嵌滾動條

(先定位,再移動)移動滾動條到最底端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=10000移動到最頂端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=0正常網頁直接進行移動executejavascriptdocument.body.scrollTop=0executejavascriptdocument.scrollTop(0,50)*js定位:(js)

31*js定位:(jQuery)

jQuery定位(定位使用的是css定位)executejavascript $('css').click()jQuery事件executejavascript $('css').click() 定位后點擊executejavascript $('css').dblclick() 定位后雙擊executejavascript $('css').text() 定位后得到元素的文字executejavascript $('css').text('文字') 定位后輸入文字返回得到的文字${x} executejavascript return$('css').text()*js定位:(jQuery)

32*css定位:*css定位:33*網頁代碼:*網頁代碼:34*css定位實例:*css定位實例:35*css結構定位:1、li>a:選中li標簽的子元素a2、li+a:選中li同級的下一個a3、li>a:nth-child(n)/li>a:nth-of-type(n):選中li下第n個ali>a:nth-last-child(n)/li>a:nth-last-of-type(n):選中li下,倒數第n個a如果n=odd表示奇數如果n=even表示偶數4、li>a:last-child/li>a:last-of-type:選中li下最后面一個a

li>a:first-child/li>a:first-of-type:選中li下第一個個a5、li>a:only-child:li下只有1個a的a標簽*css結構定位:1、li>a:選中li36RFS基本使用selenium2libraryRFS基本使用selenium2library37*操作瀏覽器Selenium2Lib提供了與瀏覽器交互的關鍵詞:OpenBrowserMaximizeBrowserWindowGoToGoBackReloadPageCloseWindowCloseBrowserCloseAllBrowsers*操作瀏覽器Selenium2Lib提供了與瀏覽器交互的關鍵38驅動不同的瀏覽器Selenium默認的是Firefox瀏覽器,其他瀏覽器需要自己的driver1、下載IE的driver2、放到項目目錄下驅動不同的瀏覽器Selenium默認的是Firefox瀏覽39*常用關鍵字點擊ClickButton|locatorClickElement|locatorClickImage|locatorClickLink|locatorDoubleClickElement|locator有時在IE中,Click不起作用,可以用如下命令來替代PressKey|<id>|\\13或\\10*常用關鍵字點擊40常用關鍵字輸入InputPassword|locator|textInputText|locator|text有時會出現輸入之后界面沒有的問題,可以用如下命令來觸發頁面更新PressKey|<id>|\\13或\\10常用關鍵字輸入41*常用關鍵字按鍵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*常用關鍵字按鍵43:Keys.ADD,42常用關鍵字Selenium2Lib提供了和其他界面元素交互的關鍵詞:ElementFocus聚焦Simulate模擬時間觸發OpenContextMenu打開ListSelectAllFromListSelectFromListUnselectFromListCheckboxSelectCheckboxUnselectCheckbox常用關鍵字Selenium2Lib提供了和其他界面元素交互的43常用關鍵字Selenium2Lib提供了和其他界面元素交互的關鍵詞:RadioButtonSelectRadioButtonFormSubmitFormChooseFile(ForFileUpload)常用關鍵字Selenium2Lib提供了和其他界面元素交互的44*常用關鍵字默認情況下,Selenium2會自動等待頁面加載完成對于頁面AJAX可以使用如下等待頁面的關鍵詞:WaitForCondition|condition|timeout=None|error=NoneWaitUntilPageContains|text|timeout=None|error=NoneWaitUntilPageContainsElement|locator|timeout一種調試時可以使用,但是不應該留下來的SleepxSleep關鍵詞是RobotFrameworkBuiltInLibrary提供的/hg/doc/libraries/BuiltIn.html?r=2.6.1*常用關鍵字默認情況下,Selenium2會自動等待頁面加45常用關鍵字獲取頁面信息:PageGetTitleGetLocationGetSourceGetMatchingXpathCountElementGetElementAttributeGetValueGetText(AddedByAdamWu)LinkGetAllLinks常用關鍵字獲取頁面信息:46常用關鍵字獲取頁面信息TableGetTableCellListGetListItemsGetSelectedListLabelGetSelectedListLabelsGetSelectedListValueGetSelectedListValues常用關鍵字獲取頁面信息47RFS基本使用彈出窗口處理RFS基本使用彈出窗口處理48*常用關鍵字AlertShouldBePresentGetAlertMessageChooseCancelOnNextConfirmationChooseOkOnNextConfirmationConfirmAction*常用關鍵字AlertShouldBePresent49*AutoItLibrary以管理員身份運行cmdpythonsetup.pyinstall導入庫AutoItLibrary*AutoItLibrary以管理員身份運行cmd50RFS基本使用編寫測試用例RFS基本使用編寫測試用例51添加資源資源下面可以放自己的關鍵字添加資源資源下面可以放自己的關鍵字52*增加自定義關鍵字*增加自定義關鍵字53增加內置模塊為資源添加庫增加內置模塊為資源添加庫54引用自定義資源在測試套件中添加資源引用自定義資源在測試套件中添加資源55*使用自定義資源“打開瀏覽器”已經變顏色了,說明引用正確*使用自定義資源56*參數化:

(一)創建列表形式,適用于少量數據*參數化:

(一)創建列表形式,適用于少量數據57*(二)調用read.py腳本,進行封裝,適用于大量數據*(二)調用read.py腳本,進行封裝,適用于大量數據58*位置結構:excel文件和read.py文件在同一個目錄*位置結構:excel文件和read.py文件在同一個目錄59*read.py腳本,代碼一覽*read.py腳本,代碼一覽60*寫好自動化測試用例的原則要做到流程和數據的分離注意:界面元素id不算數據,不應分離*寫好自動化測試用例的原則要做到流程和數據的分離61更新測試用例增加一個新的測試用例這樣好嗎?更新測試用例增加一個新的測試用例62寫好自動化測試用例的原則不斷封裝,用例復用寫好自動化測試用例的原則不斷封裝,用例復用63*寫好自動化測試用例的原則要做到數據和流程的分離不斷抽象,消除冗余*寫好自動化測試用例的原則要做到數據和流程的分離64寫好自動化測試用例的原則要做到數據和流程的分離不斷抽象,消除冗余測試用例應該簡單易讀,避免復雜邏輯寫好自動化測試用例的原則要做到數據和流程的分離65*寫好自動化測試用例的原則要做到數據和流程的分離不斷抽象,消除冗余測試用例應該簡單易讀,避免復雜邏輯問題:“登錄”放在這好嗎?*寫好自動化測試用例的原則要做到數據和流程的分離66寫好自動化測試用例的原則1、要做到流程和數據的分離2、通過不斷抽象,消除冗余3、測試用例應盡量簡單易讀,避免復雜邏輯4、建立測試用例分層架構,并堅守寫好自動化測試用例的原則1、要做到流程和數據的分離67測試用例的層次結構測試用例=

測試流程模板+測試數據

測試流程模板=測試流程構件的排列

測試流程構件=測試流程步驟的排列

測試流程步驟=界面交互細節CallSeleniumLibrary測試用例的層次結構測試用例=測試流程模板=測試流程構68RFS基本使用變量和結果驗證RFS基本使用變量和結果驗證69使用變量使用變量來實現測試目標可變使用變量使用變量來實現測試目標可變70使用變量使用變量來實現測試目標可變運行時可以指定變量取值切換不同環境使用變量使用變量來實現測試目標可變71使用變量可以使用變量來獲得界面返回值,用于驗證需要注意關鍵詞里面的返回值變量只在關鍵詞之內有效,可以通過如下關鍵詞來提升變量的可見范圍,但是最好只提升到Test級別,因為測試用例最好是相互獨立的SetGlobalVariableSetSuiteVariableSetTestVariable使用變量可以使用變量來獲得界面返回值,用于驗證72常用關鍵字驗證頁面是否包含相應結果PagePageShould(Not)ContainButtonPageShould(Not)ContainCheckboxPageShould(Not)ContainElementPageShould(Not)ContainImagePageShould(Not)ContainLinkPageShould(Not)ContainListPageShould(Not)ContainRadioButtonPageShould(Not)ContainTextfieldLocation&TitleLocationShouldBeLocationShouldContainTitleShouldBe常用關鍵字驗證頁面是否包含相應結果73常用關鍵字驗證頁面是否包含相應結果TextCurrentFrameContainsPageShouldContainPageShouldNotContainTextfieldValueShouldBeElementElementShouldBeDisabledElementShouldBeEnabledElementShouldBeVisibleElementShouldContainElementShouldNotBeVisibleElementTextShouldBe常用關鍵字驗證頁面是否包含相應結果74常用關鍵字驗證頁面是否包含相應結果ListListSelectionShouldBeListShouldHaveNoSelectionsCheckboxCheckboxShouldBeSelectedCheckboxShouldNotBeSelectedRadioButtonRadioButtonShouldBeSetToRadioButtonShouldNotBeSelected常用關鍵字驗證頁面是否包含相應結果75常用關鍵字驗證頁面是否包含相應結果TableTableCellShouldContainTableColumnShouldContainTableFooterShouldContainTableHeaderShouldContainTableRowShouldContainTableShouldContainTextfieldShouldContainXpathXpathShouldMatchXTimes常用關鍵字驗證頁面是否包含相應結果76DBLibrary1、下載DBLibrary:http://franz-see.github.io/Robotframework-Database-Library/2、安裝pythonsetup.pyinstall3、導入庫:DatabaseLibrary4、安裝MySQLInterface/petehunt/PyMySQLDBLibrary1、下載DBLibrary:http:/77DBLibraryConnectToDatabaseUsingCustomParamsDisconnectFromDatabaseQueryExecuteSqlStringRowCountIsEqualToXTableMustExistCheckIfExistsInDatabaseDBLibraryConnectToDatabaseU78RFS基本使用數據驅動RFS基本使用數據驅動79數據驅動可以利用Template實現數據驅動數據驅動可以利用Template實現數據驅動80創建一個Template新建一個關鍵字LoginTemplate創建一個Template新建一個關鍵字LoginTempla81引用Template注意:用例中如果使用了這個template,那么用例步驟里面就只用填寫傳遞的參數就可以了引用Template注意:用例中如果使用了這個templat82RFS基本使用RFS中的編程RFS基本使用RFS中的編程83分支與流程控制常用關鍵字RunKeywordIfRunKeywordIfTestPassed/Failed(onlyforteardown)SetVariableIf分支與流程控制常用關鍵字84常用關鍵字Evaluate常用關鍵字Evaluate85RFS基本使用自定義關鍵字RFS基本使用自定義關鍵字86使用Python開發自定義關鍵字我們來開發一個產生隨機數的庫1、新建一個文件:MyLibrary.py使用Python開發自定義關鍵字我們來開發一個產生隨機數的庫87引用定義關鍵字1、把它放到項目文件夾下2、導入自己的庫MyLibrary.py引用定義關鍵字1、把它放到項目文件夾下88使用自己的庫產生4到10的隨機數使用自己的庫產生4到10的隨機數89Content驗收測試驅動開發概述工具簡介與環境搭建RobotFramework+Selenium使用持續集成BDD簡介與lettuceContent驗收測試驅動開發概述90持續集成(CI)持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。安裝Jenkins持續集成(CI)持續集成是一種軟件開發實踐,即團隊開發成員經91打開Jenkinshttp://localhost:8080打開Jenkinshttp://localhost:808092添加節點選擇系統管理管理節點添加節點選擇系統管理管理節點93添加節點新建節點填入節點名稱添加節點新建節點94添加節點#ofexecutors:如果使用RF的話必須填1RemoteFSroot:遠程機的工作目錄Launchmethod:如果選其他的可能會出錯添加節點#ofexecutors:如果使用RF的話必須填95啟動節點

建議使用這種方式啟動節點96添加插件1、系統管理管理插件

2、高級—選擇文件—上傳

(上傳后需重啟Jenkins)添加插件1、系統管理管理插件97新建任務1、在首頁新建任務 2、填入名稱,選擇自由風格即可新建任務1、在首頁新建任務 2、填入98新建任務新建任務99Content驗收測試驅動開發概述工具簡介與環境搭建RobotFramework+Selenium使用持續集成BDD簡介與lettuceContent驗收測試驅動開發概述100*BDD簡介BDD:BehaviorDrivenDevelopment,行為驅動開發是一種敏捷軟件開發的技術,它鼓勵軟件項目中的開發者、QA和非技術人員或商業參與者之間的協作。ThecommonBDDapproachbasicallyconsistsin:writingsomeunittestsrunningthesetestsmakingthesetestsfailwritingcodemakingthecodepassthesetests(greenstatus)*BDD簡介BDD:BehaviorDrivenDeve101lettuceLettuce是一個基于Cucumber(目前比lettuce更強大的BDD工具,Cucumber是基于ruby語言的)的簡單的BDD測試工具。Lettuce是基于Python語言的。在線安裝:pipinstalllettucelettuceLettuce是一個基于Cucumber(目102Lettuce流程Lettuce流程103Lettuce+selenium進行Web測試1、安裝lettucepipinstalllettucehttp://lettuce.it2、安裝lettuce_webdriverpipinstalllettuce_webdriver/pypi/lettuce_webdriver3、安裝nosepipinstallnose/pypi/nose/Lettuce+selenium進行Web測試1、安裝let104一個例子(1)Lettuce的目錄結構.../test/features/baidu.feature

/step_definitions/setps.py

/support/terrain.py一個例子(1)Lettuce的目錄結構105*一個例子(2)*一個例子(2)106一個例子(3)*一個例子(3)*107*一個例子(4)Lettuce的traint文件*一個例子(4)Lettuce的traint文件108一個例子(5)運行Lettuce直接在test目錄下運行lettuce命令一個例子(5)運行Lettuce直接在test目錄下運109RFS自動化測試培訓課件110Content工具簡介與環境搭建RobotFramework+Selenium使用持續集成BDD簡介與lettuceContent111工具列表RobotFrameworkSeleniumFireBugJenkinslettuce工具列表RobotFramework112RobotFramework是什么RobotFramework是一款python編寫的功能自動化測試框架。具備良好的可擴展性,支持關鍵字驅動,可以同時測試多種類型的客戶端或者接口,可以進行分布式測試執行。主要用于輪次很多的驗收測試和驗收測試驅動開發(ATDD)。RobotFramework是什么RobotFrame113自動化測試框架的職責定義一種統一的方式來書寫和組織測試用例(測試步驟,測試數據與期待返回值);控制測試用例的執行過程;生成測試報告和測試日志;自動化測試框架的職責定義一種統一的方式來書寫和組織測試用例(114RobotFramework特性易于使用,采用表格式語法,統一測試用例格式;重用性好,可以利用現有關鍵字來組合新關鍵字;支持變量;支持創建基于數據驅動的測試用例。結果報告和日志采用HTML格式,易于閱讀;提供標簽以分類和選擇將被執行的測試用例;平臺、應用無關;功能全面,支持WEB測試(Selenium)、JavaGUI測試易于擴展,提供了簡單API,用戶可以自定義的基于Python或者Java的測試庫;易于集成,提供了命令行接口和基于XML的輸出文件;易于與版本管理集成RobotFramework特性易于使用,采用表格式語法,115Selenium簡介Selenium是ThoughtWorks專門為Web應用程序編寫的一個驗收測試工具。與其他測試工具相比,使用Selenium的最大好處是:Selenium測試直接在瀏覽器中運行,就像真實用戶所做的一樣。Selenium測試可以在Windows、Linux和上的InternetExplorer、Mozilla和Firefox中運行。其他測試工具都不能覆蓋如此多的平臺。RFS=RobotFramework+Selenium(WD)Selenium簡介Selenium是ThoughtW116RobotFramework架構RobotFramework架構117環境搭建在線安裝安裝Python,使用Python-2.7安裝wxPython2.8pipinstallrobotframeworkpipinstallrobotframework-ridepipinstallrobotframework-selenium2library瀏覽器driver:

/p/selenium/downloads/list環境搭建在線安裝安裝Python,使用Python118環境搭建離線安裝1、/pypi/decorator/2、/pypi/robotframework/#downloads3、/pypi/robotframework-selenium2library/1.5.04、/pypi/selenium/2.40.0環境搭建離線安裝119中文支持在[PythonDir]\Lib\site-packages\robot\utils下的encodingsniffer.py文件中,找到DEFAULT_OUTPUT_ENCODING='cp437':原來的編碼是’cp437’將其改成’cp936’(簡體中文,gbk)。中文支持在[PythonDir]\Lib\site-pack120*FireBug安裝*FireBug安裝121FireBug入門使用FireBug入門使用122Content工具簡介與環境搭建RobotFramework+Selenium使用持續集成BDD簡介與lettuceContent123RFS基本使用入門實例RFS基本使用入門實例124*新建項目*新建項目125*新建測試套件123*新建測試套件123126*新建測試用例132*新建測試用例132127*添加測試庫132在測試套件中添加庫注意區分大小寫*添加測試庫132在測試套件中添加庫128*編寫測試用例打開禪道登錄頁面輸入用戶名輸入密碼單擊登錄按鈕關鍵字*編寫測試用例打開禪道登錄頁面關鍵字129*運行測試*運行測試130*運行測試*運行測試131*查看報告*查看報告132*查看日志*查看日志133134*RFS基本使用元素定位24*RFS基本使用元素定位134Selenium支持的定位方式最好以id來定位,如果沒有id可以使用Assign

Id

To

Element關鍵字來為元素分配一個idSelenium支持的定位方式最好以id來定位,如果沒有id135*Xpath*Xpath136*Xpath1通過絕對路徑定位元素xpath=/html/body/form/input通過相對路徑定位元素xpath=//input使用索引來定位元素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’]*Xpath1通過絕對路徑定位元素137*Xpath2使用屬性名稱定為元素xpath=//input[@name]使用部分屬性值定位元素使用值來匹配任意屬性及元素//input[@*=’username’]*Xpath2使用屬性名稱定為元素138*切換到新的窗口有時,瀏覽器打開了兩個窗口,要跳轉到新的窗口才能操作元素進入新的窗口SelectWindow new返回到主窗口SelectWindow main注意:切換到新窗口后,關閉窗口,必須要有一步返回到主頁面打開3和3個以上的窗口:@{x} listwindows 首先得到所有窗口的句柄列表selectwindow @{x}[2] 切換到第三個窗口*切換到新的窗口有時,瀏覽器打開了兩個窗口,要跳轉到新的窗口139*進入一個frame或iframe有時,需要先進入一個frame或iframe再定位一個元素,這樣效率更高,可以使用如下兩個關鍵詞進入一個frame或iframeSelectFrame|locator回到最上層frame或iframeUnselectFrame*進入一個frame或iframe有時,需要先進入一個fra140*js定位:(js)

js點擊executejavascript document.querySelectorAll('css')[0].click()移動div中內嵌滾動條

(先定位,再移動)移動滾動條到最底端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=10000移動到最頂端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=0正常網頁直接進行移動executejavascriptdocument.body.scrollTop=0executejavascriptdocument.scrollTop(0,50)*js定位:(js)

141*js定位:(jQuery)

jQuery定位(定位使用的是css定位)executejavascript $('css').click()jQuery事件executejavascript $('css').click() 定位后點擊executejavascript $('css').dblclick() 定位后雙擊executejavascript $('css').text() 定位后得到元素的文字executejavascript $('css').text('文字') 定位后輸入文字返回得到的文字${x} executejavascript return$('css').text()*js定位:(jQuery)

142*css定位:*css定位:143*網頁代碼:*網頁代碼:144*css定位實例:*css定位實例:145*css結構定位:1、li>a:選中li標簽的子元素a2、li+a:選中li同級的下一個a3、li>a:nth-child(n)/li>a:nth-of-type(n):選中li下第n個ali>a:nth-last-child(n)/li>a:nth-last-of-type(n):選中li下,倒數第n個a如果n=odd表示奇數如果n=even表示偶數4、li>a:last-child/li>a:last-of-type:選中li下最后面一個a

li>a:first-child/li>a:first-of-type:選中li下第一個個a5、li>a:only-child:li下只有1個a的a標簽*css結構定位:1、li>a:選中li146RFS基本使用selenium2libraryRFS基本使用selenium2library147*操作瀏覽器Selenium2Lib提供了與瀏覽器交互的關鍵詞:OpenBrowserMaximizeBrowserWindowGoToGoBackReloadPageCloseWindowCloseBrowserCloseAllBrowsers*操作瀏覽器Selenium2Lib提供了與瀏覽器交互的關鍵148驅動不同的瀏覽器Selenium默認的是Firefox瀏覽器,其他瀏覽器需要自己的driver1、下載IE的driver2、放到項目目錄下驅動不同的瀏覽器Selenium默認的是Firefox瀏覽149*常用關鍵字點擊ClickButton|locatorClickElement|locatorClickImage|locatorClickLink|locatorDoubleClickElement|locator有時在IE中,Click不起作用,可以用如下命令來替代PressKey|<id>|\\13或\\10*常用關鍵字點擊150常用關鍵字輸入InputPassword|locator|textInputText|locator|text有時會出現輸入之后界面沒有的問題,可以用如下命令來觸發頁面更新PressKey|<id>|\\13或\\10常用關鍵字輸入151*常用關鍵字按鍵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*常用關鍵字按鍵43:Keys.ADD,152常用關鍵字Selenium2Lib提供了和其他界面元素交互的關鍵詞:ElementFocus聚焦Simulate模擬時間觸發OpenContextMenu打開ListSelectAllFromListSelectFromListUnselectFromListCheckboxSelectCheckboxUnselectCheckbox常用關鍵字Selenium2Lib提供了和其他界面元素交互的153常用關鍵字Selenium2Lib提供了和其他界面元素交互的關鍵詞:RadioButtonSelectRadioButtonFormSubmitFormChooseFile(ForFileUpload)常用關鍵字Selenium2Lib提供了和其他界面元素交互的154*常用關鍵字默認情況下,Selenium2會自動等待頁面加載完成對于頁面AJAX可以使用如下等待頁面的關鍵詞:WaitForCondition|condition|timeout=None|error=NoneWaitUntilPageContains|text|timeout=None|error=NoneWaitUntilPageContainsElement|locator|timeout一種調試時可以使用,但是不應該留下來的SleepxSleep關鍵詞是RobotFrameworkBuiltInLibrary提供的/hg/doc/libraries/BuiltIn.html?r=2.6.1*常用關鍵字默認情況下,Selenium2會自動等待頁面加155常用關鍵字獲取頁面信息:PageGetTitleGetLocationGetSourceGetMatchingXpathCountElementGetElementAttributeGetValueGetText(AddedByAdamWu)LinkGetAllLinks常用關鍵字獲取頁面信息:156常用關鍵字獲取頁面信息TableGetTableCellListGetListItemsGetSelectedListLabelGetSelectedListLabelsGetSelectedListValueGetSelectedListValues常用關鍵字獲取頁面信息157RFS基本使用彈出窗口處理RFS基本使用彈出窗口處理158*常用關鍵字AlertShouldBePresentGetAlertMessageChooseCancelOnNextConfirmationChooseOkOnNextConfirmationConfirmAction*常用關鍵字AlertShouldBePresent159*AutoItLibrary以管理員身份運行cmdpythonsetup.pyinstall導入庫AutoItLibrary*AutoItLibrary以管理員身份運行cmd160RFS基本使用編寫測試用例RFS基本使用編寫測試用例161添加資源資源下面可以放自己的關鍵字添加資源資源下面可以放自己的關鍵字162*增加自定義關鍵字*增加自定義關鍵字163增加內置模塊為資源添加庫增加內置模塊為資源添加庫164引用自定義資源在測試套件中添加資源引用自定義資源在測試套件中添加資源165*使用自定義資源“打開瀏覽器”已經變顏色了,說明引用正確*使用自定義資源166*參數化:

(一)創建列表形式,適用于少量數據*參數化:

(一)創建列表形式,適用于少量數據167*(二)調用read.py腳本,進行封裝,適用于大量數據*(二)調用read.py腳本,進行封裝,適用于大量數據168*位置結構:excel文件和read.py文件在同一個目錄*位置結構:excel文件和read.py文件在同一個目錄169*read.py腳本,代碼一覽*read.py腳本,代碼一覽170*寫好自動化測試用例的原則要做到流程和數據的分離注意:界面元素id不算數據,不應分離*寫好自動化測試用例的原則要做到流程和數據的分離171更新測試用例增加一個新的測試用例這樣好嗎?更新測試用例增加一個新的測試用例172寫好自動化測試用例的原則不斷封裝,用例復用寫好自動化測試用例的原則不斷封裝,用例復用173*寫好自動化測試用例的原則要做到數據和流程的分離不斷抽象,消除冗余*寫好自動化測試用例的原則要做到數據和流程的分離174寫好自動化測試用例的原則要做到數據和流程的分離不斷抽象,消除冗余測試用例應該簡單易讀,避免復雜邏輯寫好自動化測試用例的原則要做到數據和流程的分離175*寫好自動化測試用例的原則要做到數據和流程的分離不斷抽象,消除冗余測試用例應該簡單易讀,避免復雜邏輯問題:“登錄”放在這好嗎?*寫好自動化測試用例的原則要做到數據和流程的分離176寫好自動化測試用例的原則1、要做到流程和數據的分離2、通過不斷抽象,消除冗余3、測試用例應盡量簡單易讀,避免復雜邏輯4、建立測試用例分層架構,并堅守寫好自動化測試用例的原則1、要做到流程和數據的分離177測試用例的層次結構測試用例=

測試流程模板+測試數據

測試流程模板=測試流程構件的排列

測試流程構件=測試流程步驟的排列

測試流程步驟=界面交互細節CallSeleniumLibrary測試用例的層次結構測試用例=測試流程模板=測試流程構178RFS基本使用變量和結果驗證RFS基本使用變量和結果驗證179使用變量使用變量來實現測試目標可變使用變量使用變量來實現測試目標可變180使用變量使用變量來實現測試目標可變運行時可以指定變量取值切換不同環境使用變量使用變量來實現測試目標可變181使用變量可以使用變量來獲得界面返回值,用于驗證需要注意關鍵詞里面的返回值變量只在關鍵詞之內有效,可以通過如下關鍵詞來提升變量的可見范圍,但是最好只提升到Test級別,因為測試用例最好是相互獨立的SetGlobalVariableSetSuiteVariableSetTestVariable使用變量可以使用變量來獲得界面返回值,用于驗證182常用關鍵字驗證頁面是否包含相應結果PagePageShould(Not)ContainButtonPageShould(Not)ContainCheckboxPageShould(Not)ContainElementPageShould(Not)ContainImagePageShould(Not)ContainLinkPageShould(Not)ContainListPageShould(Not)ContainRadioButtonPageShould(Not)ContainTextfieldLocation&TitleLocationShouldBeLocationShouldContainTitleShouldBe常用關鍵字驗證頁面是否包含相應結果183常用關鍵字驗證頁面是否包含相應結果TextCurrentFrameContainsPageShouldContainPageShouldNotContainTextfieldValueShouldBeElementElementShouldBeDisabledElementShouldBeEnabledElementShouldBeVisibleElementShouldContainElementShouldNotBeVisibleElementTextShouldBe常用關鍵字驗證頁面是否包含相應結果184常用關鍵字驗證頁面是否包含相應結果ListListSelectionShouldBeListShouldHaveNoSelectionsCheckboxCheckboxShouldBeSelectedCheckboxShouldNotBeSelectedRadioButtonRadioButtonShouldBeSetToRadioButtonShouldNotBeSelected常用關鍵字驗證頁面是否包含相應結果185常用關鍵字驗證頁面是否包含相應結果TableTableCellShouldContainTableColumnShouldContainTableFooterShouldContainTableHeaderShouldContainTableRowShouldContainTableShouldContainTextfieldShouldContainXpathXpathShouldMatchXTimes常用關鍵字驗證頁面是否包含相應結果186DBLibrary1、下載DBLibrary:http://franz-see.github.io/Robotframework-Database-Library/2、安裝pythonsetup.pyinstall3、導入庫:DatabaseLibrary4、安裝MySQLInterface/petehunt/PyMySQLDBLibrary1、下載DBLibrary:http:/187DBLibraryConnectToDatabaseUsingCustomParamsDisconnectFromDatabaseQueryExecuteSqlStringRowCountIsEqualToXTableMustExistCheckIfExistsInDatabaseDBLibraryConnectToDatabaseU188RFS基本使用數據驅動RFS基本使用數據驅動189數據驅動可以利用Template實現數據驅動數據驅動可以利用Template實現數據驅動190創建一個Template新建一個關鍵字LoginTemplate創建一個Template新建一個關鍵字LoginTempla191引用Template注意:用例中如果使用了這個template,那么用例步驟里

溫馨提示

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

評論

0/150

提交評論