webdriver、appium的工作原理

一、webdriver的實現原理

webdriver原理是經典的Server-Client架構(C/S)

這裏講到的是腳本和瀏覽器的交互,client端開始運行驅動瀏覽器的腳本的時候,這是瀏覽器收到請求開始啓動並開啓偵聽端口(80),並自動創建session,保持瀏覽器和對應客戶端的會話連接,然後客戶端運行腳本,向瀏覽器發送http請求,瀏覽器解析請求,根據腳本內容做出相應操作,返回response。這時client端根據response選擇結束還是繼續執行。

  • webdriver操作瀏覽器、頁面採用的協議:the webdriver wire protocol
  • Client和Server的通信協議:HTTP
  • HTTP傳輸的數據內容爲遵循WP協議json格式數據

二、appium的工作原理

  appium的原理也是C/S架構的形式,appium本身就是一個遠程服務器,appium中的Json wire protocol繼承自selenium的webdriver wire protocol,並進行了擴展,使得Json wire protocol能夠控制不同的移動設備的行爲。

  當開啓appium服務器的同時就開啓了監聽端口;我們運行腳本的時候,調用任何的appiumAPI,都會向Appium Server端post一條HTTP請求,請求內容就是根據webdriver wire protocol協議規定的一條JSON格式的數據;Appium Server端接收到請求後,解析出JSON數據併發送到手機端;手機端上已經由BootStrap.jar(iOS爲BootStrip.js)開啓的socket服務器監聽相應的端口,BootStrap.jar在appium每個session第一次訪問手機端的時候會自動安裝;手機端接收到對應的請求後,通過BootStrap.jar翻譯成UIAutomator能執行的命令,然後通過UIAutomator處理並操作APP完成測試。

appium在Android的工作原理

 

  1. client端也就是我們 test script是我們的webdriver測試腳本。

  2. 中間是起的Appium的服務,Appium在服務端起了一個Server(4723端口),跟selenium Webdriver測試框架類似, Appium⽀持標準的WebDriver JSONWireProtocol。在這裏提供它提供了一套REST的接口,Appium Server接收web driver client標準rest請求,解析請求內容,調⽤用對應的框架響應操作。

  3. appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上.Bootstrap監聽4724端口並接收appium 的命令,最終通過調⽤用UiAutomator的命令來實現。

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

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

appium在ios的工作原理

   在IOS端,appium同樣使⽤WebDriver的一套協議。與Android端測試框架不同的是,appium ios封裝了apple的 Instruments框架,主要用了Instrument裏的UI Automation(Apple的自動化測試框架),然後在設備中注⼊入bootstrap.js進行監聽。

  1. client端 依然是 test script是我們的webdriver測試腳本。

  2. 中間是起的Appium的服務,Appium在服務端起了一個Server(4723端口),跟selenium Webdriver測試框架類似, Appium⽀持標準的WebDriver JSONWireProtocol。在這裏提供它提供了一套REST的接口,Appium Server接收web driver client標準rest請求,解析請求內容,調⽤用對應的框架響應操作。

  3. appium server調用instruments.js 啓動⼀一個socket server,同時分出一個⼦子進程運⾏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上完成具體的動作。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章