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

    環境搭建過程中有些安裝需要翻牆安裝,所以建議安裝個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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

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



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