安裝
有兩種方式撮竿。
第一種方式:
通過(guò)npm吮便,你必定需要在一臺(tái)OS X系統(tǒng)上,親幢踏。所以Homebrew先要有髓需。
> brew install node # get node.js
> npm install -g appium # get appium
> npm install wd # get appium client
> appium & # start appium
版本號(hào)如圖:
myMac:release-iphonesimulator root$ node -v
v5.6.0
myMac:release-iphonesimulator root$ npm -v
3.6.0
myMac:release-iphonesimulator root$ appium -v
1.4.16
tips:這里NPM的安裝可以使用taboo提供的國(guó)內(nèi)鏡像。
具體參考:
npm taobao
或者安裝成taboo的CNPM房蝉。其本質(zhì)就是APM加了參數(shù)
--registry=https://registry.npm.taobao.org
比如:
$ npm install g cnpm -registry=https://registry.npm.taobao.org
appium運(yùn)行后會(huì)出現(xiàn)下面的截圖:
myMac:release-iphonesimulator root$ info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)
info: Appium REST http interface listener started on 0.0.0.0:4723
info: Console LogLevel: debug
這里需要說(shuō)明的是IOS9.2 xcode7以上的版本僚匆,只有appium1.5.0才支持,而現(xiàn)在在2015.02.26剛release搭幻。可見(jiàn)自動(dòng)化工具要在IOS版本之后很久才能支持咧擂。
第二種方式:
直接下載appium.img包,安裝成一個(gè)界面應(yīng)用檀蹋。如圖所示
不難看出這里的支持安卓和IOS兩種松申。
以IOS為例,這里的配置項(xiàng)和我們通過(guò)代碼的方式是一樣俯逾。代碼在下面不要急贸桶。
需要注意的是這里通過(guò)Launch啟動(dòng)不能和之前通過(guò)命令行啟動(dòng)一起使用,否則會(huì)出現(xiàn):
提示端口占用桌肴。
測(cè)試
那么server起來(lái)之后就可以寫測(cè)試腳本了』噬福現(xiàn)在介紹一下appium。它分為server和client坠七。
server: Appium 服務(wù)端定義了官方協(xié)議的擴(kuò)展水醋,為Appium用戶提供了方便的接口來(lái)執(zhí)行各種設(shè)備動(dòng)作,例如在測(cè)試過(guò)程中安裝/卸載app灼捂。所以只要啟動(dòng)server如上面所述即可离例。
client是對(duì)selenium的簡(jiǎn)單擴(kuò)展。所以selenium支持的開(kāi)發(fā)語(yǔ)言悉稠,appium都支持:
語(yǔ)言 | url |
---|---|
Ruby | https://github.com/appium/ruby_lib |
Python | https://github.com/appium/python-client |
Java | https://github.com/appium/java-client |
JavaScript (Node.js) | https://github.com/admc/wd |
Objective C | https://github.com/appium/selenium-objective-c |
PHP | https://github.com/appium/php-client |
C# (.NET) | https://github.com/appium/appium-dotnet-driver |
RobotFramework | https://github.com/jollychang/robotframework-appiumlibrary |
這里我們用JAVA宫蛆。通過(guò)pom來(lái)引入java-client,嗯,maven都很熟耀盗,不是重點(diǎn)想虎。
其實(shí)所謂的client就是你的測(cè)試腳本。
仍然秉承selenium web UI的測(cè)試思路叛拷,測(cè)試數(shù)據(jù)脏嚷、ui控件描述和測(cè)試邏輯三者之間的獨(dú)立株依。
自然而然,使用成功實(shí)踐的項(xiàng)目組織結(jié)構(gòu)如下,當(dāng)然具體工具還是熟悉的TestNG + Maven:
其中page_object 文件夾夕晓,是每個(gè)頁(yè)面的元素的獲取的類
測(cè)試類:IOSPageObjecttest是測(cè)試執(zhí)行
- 第一個(gè)紅框里的都是需要定義的亭畜,從字面也可以理解
app的路徑就是通過(guò)xcode來(lái)生成的路徑循集。這個(gè)就是被測(cè)對(duì)象掸哑。
需要定義Platform,Platform version(IOS的版本號(hào))筋栋,DEVICE_NAME(通過(guò)Xcode的devices可以查看)炊汤,UDID(通過(guò)xcode的devices查看)。模擬器測(cè)試可以忽略UDID這個(gè)選項(xiàng)弊攘。但是對(duì)于真機(jī)調(diào)試是必須的
選項(xiàng)抢腐。后續(xù)將如果進(jìn)行真機(jī)調(diào)試 - 第二個(gè)紅框是初始化測(cè)試的Page,也就是頁(yè)面元素獲取襟交,實(shí)例化圖一迈倍。然后使用類似于selenium web driver的方式,初始化一個(gè)driver婿着,然后綁定pagefactory
- 第三個(gè)紅框就是具體的測(cè)試用例授瘦。
本例使用的是Junit醋界,所以有setup tearDown操作竟宋。TestNG類似,可以使用@Beforetest這樣的annotation來(lái)做到形纺。
用例運(yùn)行丘侠,這個(gè)就是maven的操作了:
全集執(zhí)行或者單個(gè)用例執(zhí)行::
mvn test
mvn -Dtest=com.saucelabs.appium.iOSPageObjectTest test
真機(jī)調(diào)試
上面的所以工作在進(jìn)行IOS simulator測(cè)試并不會(huì)出現(xiàn)很多問(wèn)題。但是真機(jī)調(diào)試的問(wèn)題就來(lái)了逐样。IOS的生態(tài)系統(tǒng)比較嚴(yán)謹(jǐn)蜗字,證書(shū)很多。如果你所測(cè)試的設(shè)備沒(méi)有在某個(gè)開(kāi)發(fā)者賬戶下脂新,那么就不會(huì)簽名認(rèn)證挪捕,就不會(huì)生成app。
你需要:
- 描述文件(Provisioning Profiles)
- 開(kāi)發(fā)者證書(shū)(os_development.cer争便,或者已經(jīng)到處的p12文件)
所有都搞定了级零。這里你慢慢找吧,你需要一天時(shí)間滞乙。
就可以通過(guò)前面介紹的兩種方式的任意一種奏纪,使用appium的GUI(appium-dot-app)或者命令行來(lái)執(zhí)行case鉴嗤。
appium inspector
其本質(zhì)是定位元素:
類似于Chrome developer tools,無(wú)需過(guò)多介紹序调。
通過(guò)這個(gè)網(wǎng)站 xpathtester
將view hierarchy的xml文件load進(jìn)來(lái)后醉锅,可以簡(jiǎn)化path的獲取。
就這些吧发绢,自己玩硬耍。IOS及OS X是另外一個(gè)生態(tài)系統(tǒng),慢慢玩起边酒。