Appium+Robotframework實現iOS應用的自動化測試-5:一個簡單的例子
萬事具備,只欠編碼!
下面看一個簡單的樣本,這個樣本驗證常見的登入功能。這個例子的應用是我所在的公司正在研發的,還沒有正式上線,就不提供下載路徑了。登入功能是很多應用都用的,這個大家都知道是怎樣的功能。
首先請看resource.txt檔案的代碼:
*** Settings ***Library AppiumLibrary*** Variables ***${REMOTE_URL} http://192.168.1.6:4723/wd/hub${PLATFORM_NAME} iOS${PLATFORM_VERSION} 8.3${DEVICE_NAME} iPhone 5s${APP} /Users/admin/xxx_ios/xxx/build/Debug-iphonesimulator/xxx.app${User} 138****6789${Password} 888888*** Keywords ***Setup Open Application remote_url=${REMOTE_URL} platformName=${PLATFORM_NAME} platformVersion=${PLATFORM_VERSION} deviceName=${DEVICE_NAME} app=${APP} Short Sleep Swipe 500 200 100 200 500 #滑動 Short Sleep Swipe 500 200 100 200 500 #滑動 Short Sleep Click Element xpath=//UIAApplication[1]/UIAWindow[1]/UIAButton[1] #點擊立即體驗 Short SleepTeardown Close All Applications
簡單解釋下,因為使用Appium進行測試,所以在Settings中加入AppiumLibrary,同時需要在OS X中安裝AppiumLibrary,具體安裝方法可參考之前本人的文章Appium+Robotframework實現Android應用的自動化測試-4:AppiumLibrary介紹和安裝。
之後的Variables中設定好運行Appium所需的參數,具體介紹如下:
${REMOTE_URL}:遠程URL,指的是Appium所在的地址以及連接埠號碼,之後的/wd/hub為固定格式,請不要改動。
${PLATFORM_NAME}:平台名稱,我們在iOS中進行測試,只能寫iOS。
${PLATFORM_VERSION}:平台版本,也就是iOS的版本號碼,這個可通過在OS X的終端中運行指令xcodebuild -showsdks得知版本號碼,如所示,xcodebuild指令的具體用法大家可以自己尋找資料。
${DEVICE_NAME}:裝置名稱,就算蘋果裝置的名稱,注意要和上面的版本號碼匹配即可。
${APP}:要測試的App的全路徑,注意這個路徑指的是相對於Appium所在的機器的路徑,也即是OS X所在的機器上的路徑,這裡使用的是通過xcodebuild指令編譯後得到的app檔案。
${User} :登入的使用者名稱,因為採用手機號作為登入,所以這裡實際上是使用者完整的手機號。
${Password}:登入的使用者名稱對應的密碼。
Keywords中的Setup會在測試開始執行時自動先執行這裡的指令碼,首先是通過Open Application關鍵字安裝並開啟應用(如果之前已安裝,則會自動進行卸載操作),之後因為應用有兩幅歡迎介面,故需要通過Swipe關鍵字執行向左的滑動操作來進入啟動頁面,之後通過Click Element關鍵字來點擊立即體驗的按鈕來進入首頁。
這裡要注意的是因為AppiumLibrary沒有關鍵字執行後等待時間長度的關鍵字,這裡都用了Short Sleep來用作關鍵字執行之間的等待時間,Short Sleep關鍵字是自訂的關鍵字,其實就是對Sleep x的封裝而已,具體等待時間長度x可以根據實際情況設定。
Teardown會在測試結束後再自動執行這裡的指令碼,很簡單,調用Close All Applications來關閉所有應用即可。
接下來看看具體的登入驗證指令碼:
TestCase 驗證登入 Click Element name=登入/註冊 Short Sleep Input Value xpath=//UIAApplication[1]/UIAWindow[1]/UIATextField[1] ${User}1 #輸入錯誤使用者名稱 Input Text xpath=//UIAApplication[1]/UIAWindow[1]/UIASecureTextField[1] ${Password} #密碼 Click Element name=登入 Page Should Contain Element name=登入 #停留在登入頁面 Input Value xpath=//UIAApplication[1]/UIAWindow[1]/UIATextField[1] ${User} #正確使用者名稱 Input Text xpath=//UIAApplication[1]/UIAWindow[1]/UIASecureTextField[1] ${Password}a #輸入錯誤密碼 Click Element name=登入 Page Should Contain Element name=登入 #停留在登入頁面 Input Value xpath=//UIAApplication[1]/UIAWindow[1]/UIATextField[1] ${User} #正確使用者名稱 Input Text xpath=//UIAApplication[1]/UIAWindow[1]/UIASecureTextField[1] ${Password} #輸入正確密碼 Click Element name=登入 Short Sleep Element Name Should Be xpath=//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIAStaticText[5] xxx #驗證登入後顯示的使用者是指定的使用者
這裡首先是有兩個負面測實驗證:分別輸入錯誤的使用者名稱和輸入錯誤的密碼後進行登入,期待結果應該是登入失敗,仍在登入頁面;之後是正面驗證,輸入正確的使用者名稱和密碼後就應該登入成功並能顯示出該使用者的使用者名稱,指令碼都很簡單,就不再贅述。