Appium—簡介

Appium簡介

Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol.php

Appium是一個開源測試自動化框架,可用於原生,混合和移動Web應用程序測試。 它使用WebDriver協議驅動iOS,Android和Windows應用程序。前端

Appium優點

  • 能夠跨平臺同時支持android、ios
  • 支持多種語言,java、python、php、Ruby等等
  • 不用爲複雜的環境發愁
  • 若是你有selenium經驗,直接上手。

Appium自動化操做演示

紙上談兵終覺淺絕知此事要躬行,詳見視頻教程演示java

演示場景
  1. 自動安裝考研幫App(kaoyan3.1.0.apk),而後啓動App
  2. 檢測是否有升級彈窗,若是有則點擊取消按鈕,
  3. 而後檢測是否有引導頁面,若是有則自動點擊跳過按鈕

Appium架構原理

Appium是在手機操做系統自帶的測試框架基礎上實現的,Android和iOS的系統上使用的工具分別以下:python

  • Android(版本>4.3):UIAutomator,Android 4.3以後系統自帶的UI自動化測試工具。
  • Android(版本≤4.3):Selendroid,基於Android Instrumentation框架實現的自動化測試工具。
  • ·iOS:UIAutomation(instruments框架裏面的一個模板),iOS系統自帶的UI自動化測試工具。

運行原理

咱們的電腦(client)上運行自動化測試腳本,調用的是webdriver的接口,appium server接收到咱們client上發送過來的命令後他會將這些命令轉換爲UIautomator認識的命令,而後由UIautomator來在設備上執行自動化。android

Appium的架構原理如上圖所示,由客戶端(Appium Client)和服務器(Appium Server)兩部分組成,客戶端與服務器端經過JSON Wire Protocol進行通訊。ios

Appium服務器

Appium服務器是Appium框架的核心。它是一個基於Node.js實現的HTTP服務器。Appium服務器的主要功能是接受從Appium客戶端發起的鏈接,監遵從客戶端發送來的命令,將命令發送給bootstrap.jar(iOS手機爲bootstrap.js)執行,並將命令的執行結果經過HTTP應答反饋給Appium客戶端。git

Bootstrap.jar。

Bootstrap.jar是在Android手機上運行的一個應用程序,它在手機上扮演TCP服務器的角色。當Appium服務器須要運行命令時,Appium服務器會與Bootstrap.jar創建TCP通訊,並把命令發送給Bootstrap.jar;Bootstrap.jar負責運行測試命令。github

Appium客戶端。

它主要是指實現了Appium功能的WebDriver協議的客戶端Library,它負責與Appium服務器創建鏈接,並將測試腳本的指令發送到Appium服務器。現有的客戶端Library有多種語言的實現,包括Ruby、Python、Java、JavaScript(Node.js)、Object C、PHP和C#。Appium的測試是在這些Library的基礎上進行開發的。web

Appium組件

Appium Server

Appium Server就是Appium的服務端——一個web接口服務,使用Node.js實現。引用官網解釋說明。objective-c

Appium is a server written in Node.js. It can be built and installed from source or installed directly from NPM:

$ npm install -g appium

$ appium

Appium Desktop

Appium Desktop是一款適用於Mac,Windows和Linux的開源應用程序,它以美觀而靈活的用戶界面爲您提供Appium自動化服務器的強大功能。 它是幾個Appium相關工具的組合:

  1. Appium Server的圖形界面。 您能夠設置選項,啓動/中止服務器,查看日誌等...您也不須要使用Node 的NPM來安裝Appium,由於Node運行時與Appium Desktop捆綁在一塊兒。
  2. 您可使用Inspector查看應用程序的元素,獲取有關它們的基本信息,並與它們進行基本的交互。

     

 

 

注意

Appium Desktop與Appium不一樣。 Appium Desktop是Appium的圖形前端,帶有其餘工具。 Appium Desktop以其本身的節奏發佈,並擁有本身的版本控制系統。 就像國內不少定製的Android系統有本身版本號,可是都是基於一個Android系統版本封裝的。版本號不必定與Andriod原生系統版本號一致。如:魅族的flyme6.0系統的內核是Android 5.1

Appium GUI

Appium GUI是Appium desktop的前身。 這個也是把Appium server封裝成了一個圖形界面,下降使用門檻,如同最初的操做系統Dos都是敲命令,後面都是圖形界面操做系統,如Windows系統。不少初學者對下面這個界面應該不陌生吧,這個就是Windows版本的Appium GUI界面。測試人員能夠手動啓動,配置相關server 服務,若是不用這個啓動的話,須要命令啓動服務。由於大部分教程都是基於這個GUI來說解的,因此不少人一說Appium就認爲是這個。

該產品的Windows版本在2015年的AppiumForWindows_1_4_16_1.zip以後就中止更新了。目前版本可使用,可是封裝的不是最新的Appium版本,而是1.4.16版本。若是要使用最新的桌面版須要使用Appium Desktop

歷史版本下載

Appium Clients

由於Appium是一個C/S結構,有了服務端的確定還有客戶端,Appium Clients就是客戶端,它會給服務端Appium Server發送請求會話來執行自動化任務。就像咱們瀏覽器訪問網頁,瀏覽器是客戶端,經過操做發送請求服務器來獲取數據。咱們可使用不一樣的客戶端瀏覽器(IE,Firefox,Chrome)訪問一個網站。 Appium客戶端可使用不一樣的語言來實現,如Python,java等。具體詳見下表:

Language/Framework

Github Repo and Installation Instructions

Ruby

https://github.com/appium/ruby_lib

Python

https://github.com/appium/python-client

Java

https://github.com/appium/java-client

JavaScript (Node.js)

https://github.com/admc/wd

Objective C

https://github.com/appium/selenium-objective-c

PHP

https://github.com/appium/php-client

C# (.NET)

https://github.com/appium/appium-dotnet-driver

RobotFramework

https://github.com/jollychang/robotframework-appiumlibrary

 

Appium-desktop

Appium-desktop主界面包含三個菜單Simple,Advanced、Presets

Simple

host

設置Appium server的ip地址,本地調試能夠將ip地址修改成127.0.0.1

port

設置端口號,默認是4723不用修改

start server

啓動 Appium server

Advanced

高級參數配置修改,主要是一些Android和iOS設備,log路徑等相關信息的配置。

presets

將Advanced中的一些配置信息做爲預設配置。

啓動Appium

啓動後控制檯提示以下信息,表示Appium啓動成功。

 

[Appium] Welcome to Appium v1.7.2

[Appium] Non-default server args:

[Appium]   address: 127.0.0.1

[Appium] Appium REST http interface listener started on 127.0.0.1:4723

參考資料

https://github.com/appium/appium-desktop

相關文章
相關標籤/搜索