[Mobile] 自動化手機測試 Android and iOS

話不多說,我們直接進入主題。
要自動化測試app的時候,必須先準備兩個軟體

  • Appium / Appium GUI
  • ROBOT framework

其實如果你想要直接寫 Appium 的話,連 ROBOT framework 都可以不用準備,ROBOT可以幫忙出報告是我覺得還滿方便的功能,可以不用一直在那邊看 log 檔它到底斷在哪裡。

安裝過程我就不贅述了,有關於 appium 的部分可以在(這裡最底下看到)[http://appium.io/],ROBOT的(在這裡可以看到)[https://github.com/robotframework/robotframework/blob/master/INSTALL.rst]

裝好 appium 之後,先查好自己的設備 UUID/UDID,android的話可以下 adb devices 查,iOS 的話就在 MAC 裡面輸入以下指令

system_profiler SPUSBDataType | sed -n -e '/iP/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'

接下來用指令來啟動 appium

appium -U 設備的UUID/UDID -p 4723 --full-reset

-p 是用來指定這支 appium 要聽在哪個 port,–full-reset 是告訴 appium 說每次執行後都把安裝進去的 ipa/apk 檔案從裝置上面刪掉,讓每次跑都差不多跟第一次安裝一樣,至於我為什麼說差不多?因為有的程式在 iOS 啟動的時候會問說要不要讓程式可以跳出訊息,我測試過之後,發現它就算程式刪掉再重裝,也不一定會跳出來再問你一次,所以在寫測試案例的時候可能要對這一點多加入一點判斷。

appium 啟動起來之後,就可以開始送命令給他,以下用 python 來說明一些一開始一定要送給它的部分,這部分是利用 Appium GUI 產生的python code 截取上面啟動的部分,不過有些部分需要修改,我會在程式碼的部分說明

# -*- coding: utf-8 -*-
from selenium.webdriver.common.action_chains import ActionChains
import time, os
from appium import webdriver #這部分一開始產生的時候是從 selenium 引入進來,不過有些 appium 才有的功能 selenium 不支援,像是滑動(swipe)的部分,所以記得改成從 appium 引入

success = True
desired_caps = {}
desired_caps['appium-version'] = '1.0'
desired_caps['platformName'] = 'iOS' #必要欄位,appium 似乎是從這邊來判斷要送android的指令或事ios的指令,所以一定要送,不送它會跟你抱怨說沒有送這個參數給它,他不知道要對誰說情話
desired_caps['browserName'] = 'iOS' #這個參數在你只有一台設備的時候沒什麼用,因為他也不會去判斷,因為在上面啟動appium的後根本就沒有跟它說
desired_caps['platformVersion'] = '8.2' #這個欄位似乎也非必要,因為一開始啟動也沒說,不過我也沒拿掉過
desired_caps['app'] = os.path.abspath('/Users/wse/git/awse_appium/Signed_iTMMS1285.ipa') #這個欄位是用來說你要叫他執行哪個程式起來跑,填入你 apk/ipa 檔案的位置

wd = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps) #這邊才是真正把上面所設定的所有參數,都送過去 appium 執行,這時候 appium 才開始真的動作
wd.implicitly_wait(60)
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s