為什么選擇appium
? app自帶測試框架,為什么要選擇appium這個測試框架呢?
- Ios9.3以前使用的是UIAutomation,Ios9.3以后使用XCUITest。如果只使用Apple的UIAutomation測試框架,我們只能用javascript來編寫測試用例,而且只能用Instruction來運行測試用例。
- Android4.0以下使用基于Android Instrumentation框架實現(xiàn)的Selendroid,Android4.0以上使用UIAutomator。同樣,如果只使用Google的UIAutomation,我們就只能用java來編寫測試用例
- Appium是在手機操作系統(tǒng)自帶的測試框架基礎(chǔ)上實現(xiàn)的,而且它支持Selenium WebDriver支持的所有語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api,實現(xiàn)了真正的跨平臺自動化測試
appium工作流程
- 客戶端發(fā)送testcase腳本——> appium server通過PC端4723端口監(jiān)聽 ——> 解析腳本參數(shù)給PC端4724端口 ——> 發(fā)送給移動設(shè)備4724端口 ——> Bootstrap.jar開啟socket服務(wù),監(jiān)聽移動設(shè)備4724端口 ——> Bootstrap.jar把命令發(fā)給uiautomator ——> uiautomator執(zhí)行命令,并返回執(zhí)行結(jié)果
關(guān)于appium
- appium是C/S模式的
- appium服務(wù)端是node.js寫的,所以安裝appium都是先安裝node,npm是Node.js的包管理工具
- 我們通常安裝的appium指的是appium server,它的作用是監(jiān)聽pc端4723端口和腳本參數(shù)解析
- Bootstrap.jar在appium server和手機創(chuàng)建session成功之前,就已放入手機中,它的作用是開啟socket服務(wù),監(jiān)聽手機端4724端口,將pc端傳過來的命令發(fā)送給UiAutoamtor來執(zhí)行處理
- PC端4723端口用于和腳本打交道,基于WebDriver協(xié)議,腳本與appium server的通信實際上是一個HTTP request請求給appium server,在請求的body中,會以WebDriver Wire協(xié)議規(guī)定的JSON格式的字符串來告訴appium服務(wù)我們希望設(shè)備接下來做什么事情
- Session 的作用就是它在appium服務(wù)上保持設(shè)備的狀態(tài)信息,供在任何時間進行訪問,在多次的操作行為中,存儲在 Session對象中的配置信息將不會丟失,而是在整個用戶會話中一直存在下去,整個測試進程中設(shè)備與程序的聯(lián)系不會斷開,也不需要每次都發(fā)送帶配置信息的請求。將測試設(shè)備信息告知之后,client 創(chuàng)建1個session,在該session中通過http向appium server發(fā)送請求,appium server解析請求,完成相應(yīng)操作并返回response
- desiredCapabilities的作用是告訴server本次測試的上下文
noReset: true
automationName: XCUITest
autoLaunch: false
platformName: ios
platformVersion: 10.3.1
deviceName: iPhone 6
udid: xxxxxxxxxxxxxxxxxxxxxxxxxx
bundleId: xxxxx
來源:https://www./content-4-311451.html
|