Appium原理


面試的時候,被問到appium原理,一點不會,實在尷尬。
大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/69220719

appium運行時安裝的2個應用:Appium Settings和Unlock。

一、appium加載的過程圖解:

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.ui automator執行命令

二、初步認識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(需要翻牆)。

三、bootstrap

1.bootstrap的作用

bootstrap是Appium運行在安卓測試機傻姑娘的一個UIAutomator測試腳本,該腳本的唯一功能就是在目標機器開啟一個socket服務器來把一個session中Appium從PC端過來的命令發送給UiAutoamtor來執行處理。
它會監聽4724端口獲得命令,然后交給UiAutomator來處理。

2.bootstrap

首先,bootstrap是uiautomator的測試腳本,它的入口類bootstrap繼承於UiautomatorTestCase,所以Uiautomator可以正常運行它,它也可以正常使用uiautomator的方法,這是就是appium的命令可以轉換成uiautomator的關鍵;
其次,,bootstrap是一個socket服務器,專門監聽4724端口過來的appium的連接和命令數據,並把appium的命令轉換成uiautomator的命令來讓uiautomator進行處理;
最后,bootstrap處理的是從PC端傳過來的命令,而非一個文件。

四、所使用的技術

Android上使用了instrumentation和uiautomator兩套技術
ios使用uiautomation
同時支持Firefox,並可擴展其他平台。
默認開啟4723端口接收webdriver請求可,4723是appium服務,專門和腳本打交道;
默認開啟4724,用於和Android設備通訊
新版本的appium Android增加了UIautoamator2的支持,iOS換成了XCUItest

五、capabilities

capabilities是一些鍵值對的集合。客戶端將鍵值對發送給appium服務端,用來告訴服務端怎樣開始測試。

六、工作原理

Appium啟動時會創建一個http://127.0.0.1:4723/wd/hub服務端(相當於一個中轉站),腳本會告訴服務器我要做什么,服務端再去跟設備打交道。
服務端和設備默認使用4724端口進行通信的,底層調用uiautoamator工具,在測試的時候服務端給設備扔一個bootstrap.jar,會啟動這個包,啟動之后會在手機上創建一個socket服務,暴露的就是4723端口;相對socket服務來說,appium服務端又是一個客戶端;
服務端收到腳本傳遞過來的命令之后,通過電腦上的4724端口,向設備的4724端口發送指令,bootstrap.jar收到指令后會去完成點擊,滑動等操作,完成之后再給服務端一個響應。服務端收到之后再去運行腳本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM