appium自動化的工作原理(1)

來源:互聯網
上載者:User

標籤:會話   driver   pass   用戶端   尋找   工作原理   建立   安裝   作用   

用appium開發移動端自動化測試指令碼這麼長時間,還沒有認證的瞭解下它的原理是什麼,到底是如何?的呢?

 

1、先看一個Appium載入的過程圖解(來自:瞭解appium自動化的工作原理--69220719/)

 

 

Appium的載入過程

  1)調用Android adb完成基本的系統操作

  2)向Android上部署bootstrap.jar

  3)Bootstrap.jar Forward Android的連接埠到PC機器上

  4)Pc上監聽連接埠接收請求,使用webdriver協議

  5)分析命令並通過forward的連接埠發給bootstrap.jar

  6)Bootstrap.jar接收請求並把命令發給uiautomator

  7)Uiautomator執行命令

2、初步認識appium工作過程

  1.appium是c/s模式的
  2.appium是基於webdriver協議添加對行動裝置自動化api擴充而成的,所以具有和webdriver一樣的特性,比如多語言支援
  3.webdriver是基於http協議的,第一串連會建立一個session會話,並通過post發送一個json告知服務端相關測試資訊
  4.對於android來說,4.2以後是基於uiautomator架構實現尋找注入事件的,4.2以前則是instrumentation架構的,並封裝成一個叫Selendroid提供服務
  5.用戶端只需要發送http請求實現通訊,意味著用戶端就是多語言支援的
  6.appium服務端是node.js寫的,所以你安裝的時候無論哪個平台都是先裝node,然後npm install -g appium安裝(FQ牆)

3、bootstrap介紹

1)Bootstrap作用:

Bootstrap是Appium運行在安卓目標測試機器上的一個UiAutomator測試指令碼,該指令碼的唯一一個所做的事情是在目標機器開啟一個socket伺服器來把一個session中Appium從PC端過來的命令發送給UiAutomator來執行處理。

它會監聽4724連接埠獲得命令然後pass給UiAutomator來做處理。

 

2)Bootstrap在appium中扮演的角色:

首先,Bootstrap是uiautomator的測試指令碼,它的入口類bootstrap繼承於UiautomatorTestCase,所以Uiautomator可以正常運行它,它也可以正常使用uiautomator的方法,這個就是appium的命令可以轉換成uiautomator命令的關鍵;

其次,bootstrap是一個socket伺服器,專門監聽4724連接埠過來的appium的串連和命令資料,並把appium的命令轉換成uiautomator的命令來讓uiautomator進行處理;

最後,bootstrap處理的是從pc端過來的命令,而非一個檔案。

 

4、所使用的技術

Android上使用了instrumentation和uiautomator兩套技術

iOS使用uiautomation

同時還支援firefox, 並可擴充其他平台

預設開啟4723連接埠接受webdriver請求 ,4723是appium服務的,專門和指令碼打交道;

預設開啟4724用於和Android裝置通訊

 

五、Capabilities

Capabilities是由用戶端發送給Appium伺服器端的用來告訴伺服器去啟動哪種我們想要的會話的一套索引值對集合。當中也有一些索引值對是用來在自動化的過程中修改伺服器端的行為方式。

 

二、Appium工作原理2.1 Android

 

在Android端,appium基於WebDriver協議,利用Bootstrap.jar,最後通過調?用UiAutomator的命令,實現App的自動化測試。

UiAutomator測試架構是Android SDK內建的App UI自動化測試Java庫。

另外由於UiAutomator對H5的支援有限,appium引入了chromedriver以及safaridriver等來實現基於H5的自動化。

appium 在android端工作流程
  1. client端也就是我們 test script是我們的webdriver測試指令碼。

  2. 中間是起的Appium的服務,Appium在服務端起了一個Server(4723連接埠),跟seleniumWebdriver測試架構類似, Appium?持標準的WebDriverJSONWireProtocol。在這裡提供它提供了一套REST的介面,Appium Server接收web driverclient標準rest請求,解析請求內容,調?用對應的架構響應操作。

  3. appium server會把請求轉寄給中介軟體Bootstrap.jar,它是用java寫的,安裝在手機上.Bootstrap監聽4724連接埠並接收appium的命令,最終通過調?用UiAutomator的命令來實現。

  4. 最後Bootstrap將執行的結果返回給appium server。

  5. appium server再將結果返回給 appium client。

 

2.2 ios 

在IOS端,appium同樣使?WebDriver的一套協議。

與Android端測試架構不同的是,appium ios封裝了apple的Instruments架構,主要用了Instrument裡的UIAutomation(Apple的?自動化測試架構),然後在裝置中注?入bootstrap.js進?行監聽。

appium 在ios端工作流程
  1. client端 依然是 test script是我們的webdriver測試指令碼。

  2. 中間是起的Appium的服務,Appium在服務端起了一個Server(4723連接埠),跟seleniumWebdriver測試架構類似, Appium?持標準的WebDriverJSONWireProtocol。在這裡提供它提供了一套REST的介面,Appium Server接收web driverclient標準rest請求,解析請求內容,調?用對應的架構響應操作。

  3. appium server調用instruments.js 啟動?一個socketserver,同時分出一個?子進程運?instruments.app,將bootstrap.js(一個UIAutomation指令碼)注?入到device?於和外界進行互動

  4. 最後Bootstrap.js將執行的結果返回給appium server

  5. appium server再將結果返回給 appium client。

所以我們可以看到android與ios區別在於appium將請求轉寄到bootstrap.js或者bootstrap.jar.然後由bootstrap驅動UIAutomation和UiAutomator去devices上完成具體的動作。

 

appium自動化的工作原理(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.