Robotframework-Appium系列:登陸操做

以前Appium的環境已經配置完成(參考Robotframework-Appium系列:安裝配置),接下來就是如何使用Appium來完成咱們的apk的測試工做。html

1、環境準備

所需的軟件列表以下服務器

  • Robotframework
  • Appium
  • Android模擬器--夜神模擬器
  • 測試的apk文件
  • uiautomatorviewer:apk軟件定位工具

啓動上述列出的軟件,如截圖所示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軟件定位工具,本機啓動位置和截圖如圖所示

    2、RobotFramework關鍵字封裝

uiautomatorviewer定位apk元素

安裝apk完成以後,打開須要測試的apk,點擊圖標所示1,定位元素如圖

說明

1. 圖標1處,打開apk後,點擊此處能夠定位當前頁面中的全部元素信息

2. 圖標2處,定位的用戶名的具體元素定位

項目結構和library以及resource的導入

項目結構如圖所示

關鍵字封裝

接下來就是關鍵字封裝,在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}

這樣,登錄的用戶名的關鍵字已經封裝好了,在下次使用的時候能夠直接使用封裝好的關鍵字-輸入用戶名便可。

3、登錄流程

關於登錄頁面的關鍵字封裝完成以後,接下來就是登錄流程的梳理,針對測試apk,登錄的步驟以下:

  • 打開應用apk程序
  • 在歡迎頁面中點擊開始
  • 輸入登錄的用戶名
  • 輸入登錄的密碼
  • 點擊登錄
  • 跳過新手指引

根據登錄的流程,接下來就是針對已經封裝好的關鍵字進行流程的操做,代碼以下:

登陸成功
打開應用程序
點擊開始
截圖    login
輸入用戶名    ${username}
輸入密碼    ${password}
點擊登陸
截圖    login
跳過新手指引
截圖    login

4、斷言

而對於一個測試用例而已,最重要的就是斷言,而針對登錄成功的斷言,咱們只須要判斷登錄的用戶名和咱們輸入的用戶名是否一致,若是一致則登錄成功,不然登錄失敗。
而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包,因此須要加上包名

    5、集成jenkins執行用例

    以前偶然發現集成工具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}

如圖

相關文章
相關標籤/搜索