以前Appium的環境已經配置完成(參考Robotframework-Appium系列:安裝配置),接下來就是如何使用Appium來完成咱們的apk的測試工做。html
所需的軟件列表以下服務器
啓動上述列出的軟件,如截圖所示app
RobotFramework打開界面如圖所示
ide
Appium配置界面和啓動界面如圖所示
工具
說明post
1. 未啓動顯示的是三角形,啓動以後變爲正方形測試
2. 測試的應用程序的路徑ui
3. 測試的應用程序的包名以及activity名,在路徑輸入以後,會自動顯示,不用修改,使用默認code
4. 測試apk的平臺和使用的工具,這裏選擇的是Android6.0,Appium工具orm
Appium啓動成功界面如圖所示
Android模擬器--夜神模擬器,如圖所示
在第一次使用夜神模擬器的時候,會自動安裝Appium Settings和Unlock兩個工具;apk文件能夠直接拖到夜神模擬器中,模擬器會自動安裝。
uiautomatorviewer:apk軟件定位工具,本機啓動位置和截圖如圖所示
安裝apk完成以後,打開須要測試的apk,點擊圖標所示1,定位元素如圖
說明
1. 圖標1處,打開apk後,點擊此處能夠定位當前頁面中的全部元素信息
2. 圖標2處,定位的用戶名的具體元素定位
項目結構如圖所示
接下來就是關鍵字封裝,在robotframework中首先須要打開測試的應用程序,打開應用程序的關鍵字封裝代碼以下
打開應用程序 Open Application http://192.168.8.170:4723/wd/hub platformName=Android platformVersion=6.0.0 deviceName=192.168.8.170:62001 app=F:\\test\\mis.apk appPackage=com.xxx.xxx ... appActivity=com.xxx.xxx.atys.StartAty unicodeKeyboard=True resetKeyboard=True
界面如圖所示
打開應用程序以後,就須要定位咱們剛剛使用uiautomatorviewer工具定位的登錄用戶名,具體代碼以下
輸入用戶名 [Arguments] ${username} AppiumLibrary.wait until page contains element id=com.xxx.xxx:id/username AppiumLibrary.input text id=com.xxx.xxx:id/username ${username}
這樣,登錄的用戶名的關鍵字已經封裝好了,在下次使用的時候能夠直接使用封裝好的關鍵字-輸入用戶名便可。
關於登錄頁面的關鍵字封裝完成以後,接下來就是登錄流程的梳理,針對測試apk,登錄的步驟以下:
根據登錄的流程,接下來就是針對已經封裝好的關鍵字進行流程的操做,代碼以下:
登陸成功 打開應用程序 點擊開始 截圖 login 輸入用戶名 ${username} 輸入密碼 ${password} 點擊登陸 截圖 login 跳過新手指引 截圖 login
而對於一個測試用例而已,最重要的就是斷言,而針對登錄成功的斷言,咱們只須要判斷登錄的用戶名和咱們輸入的用戶名是否一致,若是一致則登錄成功,不然登錄失敗。
而apk中登錄的用戶名定位須要先進入我的中心,因此封裝的關鍵字以下
進入我的中心 appiumLibrary.click element id = com.xxx.xxx:id/txt_more1 獲取登陸的用戶名 ${getLoginName} appiumLibrary.get text id = com.xxx.xxx:id/tvName [Return] ${getLoginName}
那麼接下來就是斷言,在robotframework這裏使用should contain
關鍵字斷言,代碼以下
#斷言 進入我的中心 ${getLoginName} 獲取登陸的用戶名 BuiltIn .should contain ${username} ${getLoginName}
注意
此處的關鍵字should contain
使用的是Builtln
包,因此須要加上包名
以前偶然發現集成工具jenkins,使用一段時間以後,發現它的功能竟這麼強大,基本上咱們想要實現的集成均可以經過jenkins集成完成操做,省去了一系列麻煩的操做。
目前接觸的更新測試環境的代碼、接口postman和jmeter均可以使用jenkins工具進行集成構建,對於公司長期的項目進行定時構建,而且發送測試結果給指定的負責人。這樣早上來到公司就能夠直接看到測試結果。而對於屢次迭代的項目測試,不只提升了工做效率,相對而言也節省了成本。
具體的配置,能夠參考:RobotFrameWork自動化系列:安裝配置,具體配置截圖所示
jenkins運行結果展現
郵件提醒和文件配置能夠參考:JMeter接口測試系列:Jmeter+jenkins+ant 的自動化構建
這裏集成結果會發送到指定的郵箱中,這樣咱們就能夠根據測試結果提bug到bug管理系統了。
封裝的全部關鍵字代碼展現以下
打開應用程序 Open Application http://192.168.8.170:4723/wd/hub platformName=Android platformVersion=6.0.0 deviceName=192.168.8.170:62001 app=F:\\test\\mis.apk appPackage=com.xxx.xxx ... appActivity=com.xxx.xxx.atys.StartAty unicodeKeyboard=True resetKeyboard=True 切換服務器 #切換登陸服務器 AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id=com.xxx.xxx:id/login_rela_login 截圖 [Arguments] ${ScreenName} AppiumLibrary.Capture Page Screenshot ${ScreenName} 輸入用戶名 [Arguments] ${username} AppiumLibrary.wait until page contains element id=com.xxx.xxx:id/username AppiumLibrary.input text id=com.xxx.xxx:id/username ${username} 輸入密碼 [Arguments] ${password} AppiumLibrary.input text id=com.xxx.xxx:id/pwd ${password} 點擊登陸 AppiumLibrary.click element id=com.xxx.xxx:id/login 跳過新手指引 AppiumLibrary.click element id = com.xxx.xxx:id/jump_over 點擊監測統計 AppiumLibrary.click element id = com.xxx.xxx:id/txt_poi1 點擊日曆選擇 AppiumLibrary.click element id =com.xxx.xxx:id/anIvRight 進入我的中心 appiumLibrary.click element id = com.xxx.xxx:id/txt_more1 獲取登陸的用戶名 ${getLoginName} appiumLibrary.get text id = com.xxx.xxx:id/tvName [Return] ${getLoginName} 登陸頁面點擊下一步 AppiumLibrary.click element id = com.xxx.xxx:id/guide4_btn
完整的登錄成功測試用例代碼以下
登陸成功 打開應用程序 點擊開始 截圖 login 輸入用戶名 ${username} 輸入密碼 ${password} 點擊登陸 截圖 login 跳過新手指引 截圖 login #斷言 進入我的中心 ${getLoginName} 獲取登陸的用戶名 BuiltIn .should contain ${username} ${getLoginName}
如圖