1. 程式人生 > >Appium自動化—淺談iOS自動化測試環境搭建

Appium自動化—淺談iOS自動化測試環境搭建

在日常的測試工作中,我們會發現有些測試工作重複率極高,測試人員需要花費大量的時間進行這些重複性的測試,浪費了大量的人力與時間。若能夠將常用的測試場景進行自動化,那必定能節省許多的人力與時間。作為一個初次步入測試行業的小白,也十分渴望能夠使用自動化來分擔測試工作。上網搜尋了很多的資料,瞭解了很多工具,再加上之前有稍微接觸過Appium,所以決定使用Appium開啟自動化的探索。Appium支援的指令碼語言有很多,例如js、java、Python、ruby,可選擇一種自己熟練的指令碼語言進行編寫。

 

 
 

一、Appium工作原理

    根據查閱的資料,簡單的介紹一下appium的工作原理。首先Appium是c/s模式的,appium是基於webdriver協議新增對移動裝置自動化api擴充套件而成的。webdriver是基於http協議的,第一連線會建session會話,並通過post傳送一個json告知服務端相關測試資訊。如下圖1.1:

  圖1.1

    客戶端執行指令碼後生成基於WebDriver協議下的URL請求,伺服器接收URL請求(類似一個遠端命令)並將命令轉發給測試機器,測試機器接收命令,解析命令後執行相應的操作,並把執行結果返回給伺服器端,伺服器端再將執行結果返回給客戶端。

二、Appium環境搭建(osx

1.Mac os X

  圖2.1

2.xcodeAPP store即可下載)

  圖2.2

3.VPN

    環境搭建過程中有些安裝需要FQ安裝,所以建議安裝個VPN。網上隨便搜個下載即可,我使用的是WiseVPN。

4.java

    java –version:檢查是否有安裝java環境。若沒有,需要先配置java環境,http://jingyan.baidu.com/article/908080221f3cfefd91c80fbf.html(具體可百度,這個連結也非常全了,供大家參考)

  圖2.3

5.ruby

  圖2.4

6.brew

    brew是Mac OS不可或缺的套件管理器。執行下列命令:ruby -e "$(curl -fsSLhttps://raw.github.com/Homebrew/homebrew/go/install)"執行後可用brew –v看看是否已經正確安裝。

  圖2.5

7.node

    AppiumDesktop是用node . js編寫的伺服器,所以需要安裝node。執行下列命令:brew install node,執行後,同樣使用node –v檢查是否已經安裝。

  圖2.6

8.npm

    npm其實是Node.js的包管理工具(package manager)。我們在Node.js上開發時,會用到很多別人寫的JavaScript程式碼。如果我們要使用別人寫的某個包,每次都根據名稱搜尋一下官方網站,下載程式碼,解壓,再使用,非常繁瑣。於是一個集中管理的工具應運而生:大家都把自己開發的模組打包後放到npm官網上,如果要使用,直接通過npm安裝就可以直接用,不用管程式碼存在哪,應該從哪下載。Npm一般在Node.js安裝的時候順帶裝好了。使用npm –v檢查是否已經安裝。

  圖2.7

9.AppiumDesktop

    現在可以開始安裝AppiumDesktop了!我是直接在網上下載的https://github.com/appium/appium-desktop/releases/tag/v1.5.0 appium-desktop.dmg。

10.wd

    執行命令npm install wd進行wd的安裝。安裝後使用npm wd -v檢查是否安裝成功。

  圖2.8

    最後,檢查環境。Appium提供了一個doctor,供我們檢查appium的執行環境是否都正確。執行appium-doctor。

  圖2.9

    以上,證明環境都配置好了(有一處warn,不過並不影響,所以可先忽略),接下來就是進行指令碼的錄製了!

三、AppiumDesktop的使用

1.開啟appium,啟動appium服務

    點選左上角的放大鏡開啟appium server(如下圖3.2)

  圖3.1   圖3.2

2.新會話視窗

    Desired Capabilities中錄入對應的配置資訊(如下圖1)。下面介紹一下Desired Capabilities。Desired Capabilities在啟動session的時候是必須提供的。Desired Capabilities本質上是key value的物件,它會告訴appium sever你想要進行自動化的應用程式等資訊。具體的通用配置物件如下:

automationName:使用哪種自動化引擎。appium(預設)還是Selendroid?

platformName:使用哪種移動平臺。iOS, Android, orFirefoxOS?

deviceName:啟動哪種裝置,是真機還是模擬器?iPhone Simulator, iPad Simulator,真機名稱etc...

app:應用的絕對路徑,注意一定是絕對路徑。如果指定了appPackage和appActivity的話,這個屬性是可以不設定的。另外這個屬性和browserName屬性是衝突的。

browserName:移動瀏覽器的名稱。比如Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android;與app屬性互斥。

udid:物理機的id。比如1ae203187fc012g。//如果是模擬器此配置可忽略

  圖3.3   圖3.4

 

    編寫好通用的Desired Capabilities配置資訊之後可儲存會話資訊方便下次使用同一會話進行連線,自動儲存到Saved Capability Sets(如圖3.4)。最後點選Start Session(圖3.3)開始會話。

3.The Inspector

    會話連線成功後就會展示The Inspector,Inspector是應用程式狀態的視覺化表示,在應用程式上的操作都會截圖展示在Inspector的左邊,如圖3.5所示,接下來我們就可以進行指令碼的錄製了。簡要介紹一下Inspector頁面上的資訊及錄製過程(以下從左至右介紹)。

  圖3.5

    Select Elements:選取,可選取左邊頁面上的元素。獲取元素的ID或者xpath等等類似的資訊。選中某一元素後,該元素的詳細資訊會展示在右側的檢視中,並且可以在右側選擇要對此元素進行的操作,包括tap、sendkey、clear,如圖3.6

  圖3.6

Swipe By Coordinates:滑動,選擇Swipe By Coordinates後,在截圖頁面上定位兩個點,頁面將會根據定點滑動。如圖3.7

  圖3.7

Tap By Coordinates:點選,可點選左邊頁面上的元素。

Back:相當於返回按鈕

Refresh Source & Screenshot:重新整理

Search for element:尋找元素,有些元素通過Select Elements並無法選取到,因為可能出現一頁面覆蓋在另一頁面上邊,這時可以使用Search for element進行元素的查詢。如圖3.8

  圖3.8

Start Recording:錄製,選擇錄製後,你的操作過程將以指令碼的形式記錄在recorder中,recorder中還可以選擇你想要的指令碼語言,以及簡單指令碼或可執行指令碼。(ps.值得注意的是,recorder中的指令碼僅供我們參考,借用官網上的一句話:In sum, it is a learning tool, not a robust code generation feature, and should be used as such.)如圖3.9

  圖3.9

到此,指令碼錄製就完成啦。



作者:王陌陌陌
連結:https://www.jianshu.com/p/c43a94ecca97
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。