不用寫程式一樣完成手機移動APP自動化測試 — RobotFramework實作範例

不用寫程式一樣完成手機移動APP自動化測試 — RobotFramework實作範例

這篇文章主要說明如何透過 RobotFramework 來對於 iOS or Android App 進行自動化測試

對於 iOS or Android App 自動化測試是否需要 Java, Objective C等才可以做自動化測試呢?

其實如果使用 RobotFramework 我們只需要透過關鍵字定義的方式一樣可以完成手機App自動化測試

Image result for robotframework mobile testing

 

 

環境安裝

除了需要基本的 RobotFramework 運行環境之外, 我們還需要下列套件

Appium安裝可參考官網 http://appium.io/

另外筆者建議可以使用 Appium Studio, 優點是提供整体的安裝包, 省去很多個別環境設定與安裝的繁瑣

https://experitest.com/mobile-test-automation/appium-studio/

安裝Genymotion 主要原因是運行速度快! Android 模擬器往往執行速度會令人睡著,

也因為要安裝Genymotion 的緣故, 所以必須要Oracle VirtualBox 讓Genymotion 可以正常運行

 

Android 自動化測試腳本

在上述環境都準備好之後, 確定都可以正常運行, 接著我們可以開始撰寫第一個測試腳本

手機測試相關關鍵字指令查詢參考

http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html

範例程式

看起來是不是跟 Selenium Web 測試很像?

*** Settings ***
Library AppiumLibrary
*** Test Cases ***
case1
Open Application         http://localhost:4723/wd/hub platformName=Android platformVersion=4.2.2 deviceName=10.1.1.1:5555 app=${CURDIR}${/}app${/}ContactManager.apk appPackage=com.example.android.contactmanager
Click Element                       accessibility_id=Add Contact
${source}                              Get Source
Log                                         ${source}
Sleep 3s
Input Text                  xpath=//android.widget.TableRow[contains(@index,3)]/android.widget.EditText                   John
Input Text                  xpath=//android.widget.TableRow[contains(@index,5)]/android.widget.EditText                  153546872
Input Text                  xpath=//android.widget.TableRow[contains(@index,7)]/android.widget.EditText                   Testing@mail.com
Click Element            accessibility_id=Save

PS 範例中的App 下載 ContactManager.apk

 

這個範例使用幾個基本的關鍵字指令

Open Application

這個指令主要用在啟動 App 並且設定相關的環境

Open Application http://localhost:4723/wd/hub alias=Myapp1 platformName=iOS platformVersion=7.0 deviceName=’iPhone Simulator’ app=your.app
Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=4.2.2 deviceName=192.168.56.101:5555 app=${CURDIR}/demoapp/OrangeDemoApp.apk appPackage=com.netease.qa.orangedemo appActivity=MainActivity

其他常用App指令

指令 說明
Input Text 這個指令為文字輸入, 需要兩個參數, 一個為元件位置 例如Xpath, 另外一個參數為輸入的文字
Click Element 點擊元件, 只需要一個參數, 就是該元件的ID, Xpath, name 等, 支援的方式可參考下列表格

 

Strategy Example Description Note
identifier Click Element | identifier=my_element Matches by @id attribute
id Click Element | id=my_element Matches by @resource-id attribute
accessibility_id Click Element | accessibility_id=button3 Accessibility options utilize.
xpath Click Element | xpath=//UIATableView/UIATableCell/UIAButton Matches with arbitrary XPath
class Click Element | class=UIAPickerWheel Matches by class
android Click Element | android=UiSelector().description(‘Apps’) Matches by Android UI Automator
ios Click Element | ios=.buttons().withName(‘Apps’) Matches by iOS UI Automation
css Click Element | css=.green_button Matches by css in webview
name Click Element | name=my_element Matches by @name attribute Only valid for Selendroid

 

如何取得手機元件位置呢?

Web網頁我們可以透過FireBug 或是瀏覽器的開發工具取得 CSS, ID, Name, Xpath 等

但是相對於手機App 要如何取得相關的按鈕, 輸入框等元件位置呢?

我們主要透過 Android SDK提供的  \android-sdk\tools\UI automation Viewer 或是直接使用 appium 中的 Appium Inspector

Image result for UI automation Viewer

iOS 手機自動化程式範例

 

 

*** Settings ***
Library AppiumLibrary
*** Test Cases ***
case1
Open Application          http://localhost:4723/wd/hub alias=Myapp1 platformName=iOS    platformVersion=9.0 deviceName=iPhone 6 app=${CURDIR}${/}app${/}TestApp.app
Input Text                        name=TextField1 13
Input Text                        name=TextField2 22
Click Button                     Compute Sum
Click Button                    done
Click Button                    show alert
Click Button                     OK
Swipe                               178                     356                   133                      356

TestApp.app 下載

這個範例跟上述類似, 除了 Open Application 指定 iOS 外, 大多的指令一樣適用

這邊特別用到 Swipe 這個手勢的指令, 參數表示開始座標與移動距離

http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html#Swipe

對於 iOS App 要獲取元件位置直接使用 Appium Inspector 即可

Image result for Appium Inspector

 

RobotFramework 還提供哪些手機自動化指令呢?

http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html

Leave a Reply

Your email address will not be published.