appium運行時安裝的2個應(yīng)用:Appium Settings和Unlock。
一葵蒂、appium加載的過程圖解:
appium的加載過程
- 1.調(diào)用Android adb完成基本的系統(tǒng)操作
- 2.向Android上部署bootstrap.jar
- 3.bootstrap.jar Forward Android的端口到PC機器上
- 4.PC上監(jiān)聽端口接收請求,使用webdriver協(xié)議
- 5.分析命令并通過forward 端口發(fā)給bootstrap.jar
- 6.bootstrap.jar接收請求并把命令發(fā)給uiautomator
- 7.ui automator執(zhí)行命令
二料皇、初步認識appium工作過程
- 1.appium有C/S模式
- 2.appium是基于webdriver協(xié)議對移動設(shè)備自動化api擴展而成的砸脊,所有具有和webdriver一樣的特性,比如多語言支持淌实。
- 3.webdriver是基于http協(xié)議的,第一連接會建立一個session會話猖腕,并通過post發(fā)送一個json告知服務(wù)端相關(guān)測試信息拆祈。
- 4.對于Android來說,4.2以后是基于UiAutomator框架實現(xiàn)查找注入事件的倘感,4.2以前則是instrumentation框架的放坏,并封裝成一個叫Selendroid提供服務(wù)。
- 5.客戶端只需要發(fā)送http請求實現(xiàn)通訊老玛,意味著客戶端就是多語言支持的淤年。
- 6.appium服務(wù)端是node.js寫的钧敞,所以安裝那個平臺都是先安裝node,然后npm install -g appium(需要翻墻)麸粮。
三溉苛、bootstrap
1.bootstrap的作用
bootstrap是Appium運行在安卓測試機傻姑娘的一個UIAutomator測試腳本,該腳本的唯一功能就是在目標機器開啟一個socket服務(wù)器來把一個session中Appium從PC端過來的命令發(fā)送給UiAutoamtor來執(zhí)行處理豹休。
它會監(jiān)聽4724端口獲得命令炊昆,然后交給UiAutomator來處理。
2.bootstrap
首先威根,bootstrap是uiautomator的測試腳本凤巨,它的入口類bootstrap繼承于UiautomatorTestCase,所以Uiautomator可以正常運行它洛搀,它也可以正常使用uiautomator的方法敢茁,這是就是appium的命令可以轉(zhuǎn)換成uiautomator的關(guān)鍵;
其次留美,彰檬,bootstrap是一個socket服務(wù)器,專門監(jiān)聽4724端口過來的appium的連接和命令數(shù)據(jù)谎砾,并把appium的命令轉(zhuǎn)換成uiautomator的命令來讓uiautomator進行處理逢倍;
最后,bootstrap處理的是從PC端傳過來的命令景图,而非一個文件较雕。
四、所使用的技術(shù)
Android上使用了instrumentation和uiautomator兩套技術(shù)
ios使用uiautomation
同時支持Firefox挚币,并可擴展其他平臺亮蒋。
默認開啟4723端口接收webdriver請求可,4723是appium服務(wù)妆毕,專門和腳本打交道慎玖;
默認開啟4724,用于和Android設(shè)備通訊
新版本的appium Android增加了UIautoamator2的支持笛粘,iOS換成了XCUItest
五趁怔、capabilities
capabilities是一些鍵值對的集合⌒角埃客戶端將鍵值對發(fā)送給appium服務(wù)端润努,用來告訴服務(wù)端怎樣開始測試。
六序六、工作原理
1.Appium啟動時會創(chuàng)建一個http://127.0.0.1:4723/wd/hub服務(wù)端(相當于一個中轉(zhuǎn)站)任连。通過4723和AppiumClient通信蚤吹,4724和設(shè)備通信例诀。
2.AppiumClient發(fā)送請求到AppiumServer随抠,建立連接
4.AppiumServer找到設(shè)備并初始化(bootstrap.jar被發(fā)送到設(shè)備中,并執(zhí)行測試)繁涂。
4.bootstrap.jar被執(zhí)行拱她,變成了Socket服務(wù)器,暴露4724接口扔罪,和PC端的4724端口進行通信秉沼。
5.AppiumServer作為Socket的客戶端,將用例解析為一個個http請求矿酵,由boostrap轉(zhuǎn)發(fā)給uiautomator執(zhí)行唬复。