Robotframework-Appium系列:登錄操作


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

一、環境准備

所需的軟件列表如下

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

啟動上述列出的軟件,如截圖所示

  • RobotFramework打開界面如圖所示

  • Appium配置界面和啟動界面如圖所示

說明

1. 未啟動顯示的是三角形,啟動之后變為正方形

2. 測試的應用程序的路徑

3. 測試的應用程序的包名以及activity名,在路徑輸入之后,會自動顯示,不用修改,使用默認

4. 測試apk的平台和使用的工具,這里選擇的是Android6.0,Appium工具

  • Appium啟動成功界面如圖所示

  • Android模擬器--夜神模擬器,如圖所示

在第一次使用夜神模擬器的時候,會自動安裝Appium Settings和Unlock兩個工具;apk文件可以直接拖到夜神模擬器中,模擬器會自動安裝。

  • uiautomatorviewer:apk軟件定位工具,本機啟動位置和截圖如圖所示

二、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}

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

三、登陸流程

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

  • 打開應用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,使用一段時間之后,發現它的功能竟這么強大,基本上我們想要實現的集成都可以通過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}

如圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM