1.准備數據部分:
(1)設置庫文件:先調用系統自帶的庫文件Selenium2Library
*** Settings *** Library Selenium2Library
(2)設置關鍵字keyword:
*** Keywords *** 獲取cookie //keyword的名稱 [Arguments] ${username} //[Arguments]設置入參 open browser *******(測試網站地址) chrome //open browser 庫文件自帶關鍵字 input text id = username ${username} click button id=login-btn ${cookie} Get Cookies //Get Cookies,庫文件自帶關鍵字,獲取Cookie值,給賦值給變量${cookie} Set Global Variable ${cookie} //設置${cookie}為全局變量,使得所有用例和關鍵字中可以使用 close browser [Return] ${cookie} //設置出參
(3)keyword之間傳參:
*** Keywords ***
設置多個cookie
${cookie} 獲取cookie chunyu //調用其他keyword中的變量值,chunyu為入參
Set Global Variable ${cookie}
當keyword:設置多個cookie 想要調用keyword:獲取cookie 中的變量值時,可以這樣調用:
變量名${cookie} Keyword-Name(被調用的keyword的名字) 入參(被調用的keyword的入參)
(4)涉及UI的腳本:
獲取頁面元素的Xpath路徑:谷歌瀏覽器:檢查--使用元素選擇器--找到需要操作的元素--右擊copy---copy XPath
獲取待操作元素的路徑如下://*[@id="js-add-task-form"]/div[2]/div/div/div[1]/ul/li/label/span
獲取值班cookie [Arguments] ${username} open browser *****(測試網址) chrome input text id = username ${username} click button id=login-btn wait until page contains element //div[@class="ui-selects-selection"] 45 click element //div[@class="ui-selects-selection"] input text //input[@class="js-selects-input bui-form-field"] huatu wait until page contains element '//*[@id="js-add-task-form"]/div[2]/div/div/div[1]/ul/li/label/span' 45 sleep 2 click element '//*[@id="js-add-task-form"]/div[2]/div/div/div[1]/ul/li/label/span' click element //a[@class="button m-button"] wait until page contains element //button[@class="button button-primary"] click element //button[@class="button button-primary"] ${cookie} Get Cookies Set Global Variable ${cookie} [Return] ${cookie}
和UI操作有關的動作有:
wait until page contains element 等待直到頁面出現某個元素
例如:wait until page contains element //div[@class="ui-selects-selection"] 45
click element 鼠標選中某個元素
例如:click element //div[@class="ui-selects-selection"]
click button 點擊按鈕
例如:click button id=login-btn
input text 輸入框輸入值
例如:input text //input[@class="js-selects-input bui-form-field"] huatu
sleep 2 睡眠2秒
2.測試用例如何組織:
(1)用例配置:
*** Settings *** Documentation 接口:/duty/sendToInnerDuty.action Suite Setup Run Keywords 獲取cookie chunyu AND DutyLib.Set Cookie ${cookie} Test Template duty_sendToInnerDuty Library ../../../Libs/DutyLib.py Resource 准備數據.txt Resource ../../../opptions.txt
字段說明:
Documentation 描述測試接口的路徑
Suite Setup 配置用例運行的環境,比如說提前獲取到cookie Run Keywords字段就是,通過調用<獲取cookie>這個keyword來設置DutyLib這個python文件中需要的cookie值
Test Template 設置運行該測試用例需要調用的python函數:duty_sendToInnerDuty
Library 設置運行該測試用例需要調用的外部庫文件,也就是自己寫的python文件,該文件中包含了函數duty_sendToInnerDuty,只有設置了這個庫文件,上述函數才可以被調用
Resource 設置運行該測試用例需要的數據資源,其中<准備數據.txt>文件和該用例處於同一個文件夾下,是一個小前提,而<opptions.txt>是一個大前提(也就上述的准備數據部分),是在整個用例組的文件夾下
(2)用例設計:
*** Test Cases *** 項目-常規值班-工作日9:00-客戶負責人 [Setup] duty_setup startTimeStr=${next_Mon} 09:00:00 type=normal_duty customerId=177016 id=${duty_id}
----在用例中設置前置步驟:
[Setup] duty_setup startTimeStr=${next_Mon} 09:00:00 type=normal_duty customerId=177016
關鍵字:[Setup] 用於設置該用例的前置步驟
前置步驟名稱: duty_setup //該前置步驟是一個keyword,后邊跟的是這個keyword的入參
入參: startTimeStr=${next_Mon} 09:00:00 type=normal_duty customerId=177016
----在keyword中調用python函數:
*** Keywords *** duty_setup [Arguments] ${startTimeStr}=2018-12-31 00:00:00 ${type}=normal_duty ${customerId}=177016 ${duty_id} duty_save id=${EMPTY} dutySn=${EMPTY} problemId=${EMPTY} type=${type} customerId=${customerId} ... startTimeStr=${startTimeStr} endTimeStr=2018-12-31 23:59:59 customerContact=客戶聯系人_test contactInfo=聯系方式_test infoSource=internal sourceDetail=來源詳情_test ... associationEntityListJson=[] attention=注意事項_test priority=HIGH title=任務主題_test description=<p>${time}_任務描述_test</p> Set Suite Variable ${duty_id}
該keyword設置入參: [Arguments] ${startTimeStr}=2018-12-31 00:00:00 ${type}=normal_duty ${customerId}=177016
調用python函數: duty_save 該函數是在庫文件DutyLib.py中定義的
該python函數的出參: ${duty_id}
該python函數的入參:跟在函數名后邊
設置出參變量為全局變量: Set Suite Variable ${duty_id} ,方便其他用例在以該keyword為前置步驟時,可以使用這個全局變量