Appium原理精講
目前使用Appium新版本和舊版本的企業(yè)數(shù)目都很多闸拿,而兩個(gè)版本的安裝過(guò)程和api的使用又有較大的區(qū)別褐桌。但是無(wú)論表面上的東東如何變化针肥,內(nèi)部原理都是一樣的饼记。在這里我給大家介紹一下appium的核心,增進(jìn)大家對(duì)它的理解慰枕,相信這會(huì)對(duì)大家后期的使用有很大的幫助具则。
Appium概念
Appium是一個(gè)開(kāi)源、跨平臺(tái)的自動(dòng)化測(cè)試工具具帮,用于測(cè)試原生和輕量移動(dòng)應(yīng)用博肋,支持 iOS, Android 和 FirefoxOS 平臺(tái)。Appium
驅(qū)動(dòng)蘋果的 UIAutomation 庫(kù)和 Android 的 UiAutomator 框架蜂厅,使用 Selenium 的 WebDriver JSON 協(xié)議匪凡。Appinm 的 iOS 支持是基于 Dan Cuellar's 的 iOS Auto. Appium 同時(shí)綁定了Selendroid 用于老的 Android 平臺(tái)測(cè)試(SDK < 16)。
官網(wǎng):http://appium.io/
Github:https://github.com/appium/appium
特性
1. 跨平臺(tái)葛峻, native/ hybrid/ webview(H5)
2. 跨設(shè)備锹雏, android/iOS
3. 跨app,可以在多個(gè)app之間交互
4. 不依賴APP開(kāi)源代碼
5. 支持Selenium WebDriver / Selenium Grid
6. 跨語(yǔ)言术奖, java/python/ruby
7. Open Source
框架介紹
Appium是由nodejs的express框架寫的HttpServer礁遵。Appium不是它??創(chuàng)建?套新的測(cè)試框架,是將現(xiàn)有的優(yōu)秀的框架進(jìn)行了集成采记,以Selenium
WebDriver的協(xié)議(JsonWireProtocol/Restful web service)統(tǒng)?起來(lái).使得這個(gè)框架滿?多??的需求佣耐。Appium啟動(dòng)自動(dòng)化測(cè)試后,在被測(cè)設(shè)備上啟動(dòng)?個(gè)server唧龄,監(jiān)聽(tīng)來(lái)? Appium server的指令兼砖。不同的平臺(tái)(如IOS,Android)采?不同的運(yùn)?和交換?式。Appium將某個(gè)樁程序“侵入”平臺(tái)讽挟,用于接受指令懒叛,來(lái)完成測(cè)試腳本的運(yùn)行。在Android端耽梅,appium基于WebDriver薛窥,并利用Bootstrap.js,最后通過(guò)調(diào)?用UiAutomator的命令眼姐,實(shí)現(xiàn)App的自動(dòng)化測(cè)試诅迷。另外由于UiAutomator對(duì)H5的支持有限,appium引入了chromedriver來(lái)實(shí)現(xiàn)基于H5的自動(dòng)化众旗。
原理圖(Android)
分析:
1.左邊的Code(WebDriver script)是我們的appium測(cè)試腳本罢杉。
2.中間是開(kāi)起的Appium的服務(wù)(不同的系統(tǒng)需要安裝與之對(duì)應(yīng)的Appium server,這也就是appium可以同時(shí)支持android贡歧、ios以及windows應(yīng)用進(jìn)行自動(dòng)化測(cè)試的原因滩租。在這里以android為例進(jìn)行說(shuō)明)Appium在這邊起了一個(gè)Server(4723端口),跟selenium Webdriver測(cè)試框架類似艘款,Appium支持標(biāo)準(zhǔn)的WebDriver JSONWireProtocol持际。在這里提供了一套web服務(wù),Appium Server接收webdriver標(biāo)準(zhǔn)請(qǐng)求哗咆,解析請(qǐng)求內(nèi)容蜘欲,調(diào)?用對(duì)應(yīng)的框架響應(yīng)操作。如:腳本發(fā)送一個(gè)點(diǎn)擊按鈕的請(qǐng)求給appium server晌柬。
3. appium server會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給中間件Bootstrap.jar 姥份,它是用java寫的,安裝在手機(jī)上年碘。Bootstrap接收 appium 的命令(4724端口)澈歉,最終通過(guò)調(diào)?用UiAutomator的命令來(lái)實(shí)現(xiàn)。
4.最后執(zhí)? 的結(jié)果由Bootstrap返回給appium server屿衅。
5.另外埃难,appium還用到了chromedriver來(lái)支持基于H5(webview)的測(cè)試。