天天看點

appium工作流程解析

為什麼選擇appium

​ app自帶測試架構,為什麼要選擇appium這個測試架構呢?

  • Ios9.3以前使用的是UIAutomation,Ios9.3以後使用XCUITest。如果隻使用Apple的UIAutomation測試架構,我們隻能用javascript來編寫測試用例,而且隻能用Instruction來運作測試用例。
  • Android4.0以下使用基于Android Instrumentation架構實作的Selendroid,Android4.0以上使用UIAutomator。同樣,如果隻使用Google的UIAutomation,我們就隻能用java來編寫測試用例
  • Appium是在手機作業系統自帶的測試架構基礎上實作的,而且它支援Selenium WebDriver支援的所有語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api,實作了真正的跨平台自動化測試

appium工作流程

  • 用戶端發送testcase腳本——> appium server通過PC端4723端口監聽 ——> 解析腳本參數給PC端4724端口 ——> 發送給移動裝置4724端口 ——> Bootstrap.jar開啟socket服務,監聽移動裝置4724端口 ——> Bootstrap.jar把指令發給uiautomator ——> uiautomator執行指令,并傳回執行結果

關于appium

  • appium是C/S模式的
  • appium服務端是node.js寫的,是以安裝appium都是先安裝node,npm是Node.js的包管理工具
  • 我們通常安裝的appium指的是appium server,它的作用是監聽pc端4723端口和腳本參數解析
  • Bootstrap.jar在appium server和手機建立session成功之前,就已放入手機中,它的作用是開啟socket服務,監聽手機端4724端口,将pc端傳過來的指令發送給UiAutomator來執行處理
  • PC端4723端口用于和腳本打交道,基于WebDriver協定,腳本與appium server的通信實際上是一個HTTP request請求給appium server,在請求的body中,會以WebDriver Wire協定規定的JSON格式的字元串來告訴appium服務我們希望裝置接下來做什麼事情
  • Session 的作用就是它在appium服務上保持裝置的狀态資訊,供在任何時間進行通路,在多次的操作行為中,存儲在 Session對象中的配置資訊将不會丢失,而是在整個使用者會話中一直存在下去,整個測試程序中裝置與程式的聯系不會斷開,也不需要每次都發送帶配置資訊的請求。将測試裝置資訊告知之後,client 建立1個session,在該session中通過http向appium server發送請求,appium server解析請求,完成相應操作并傳回response
  • desiredCapabilities的作用是告訴server本次測試的上下文
noReset: true
automationName: XCUITest
autoLaunch: false
platformName: ios
platformVersion: 10.3.1
deviceName: iPhone 6
udid: xxxxxxxxxxxxxxxxxxxxxxxxxx
bundleId: xxxxx                
  • 更多配置請檢視官方文檔:[http://appium.io/docs/en/writing-running-appium/caps/]

轉載于:https://www.cnblogs.com/iamluoli/p/11157187.html