1. 程式人生 > >1、Appium簡介

1、Appium簡介

運行命令 serve order 來講 開發 github lan borde source

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.

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

Appium優勢

  • 可以跨平臺同時支持android、ios
  • 支持多種語言,java、python、php、Ruby等等
  • 不用為復雜的環境發愁
  • 如果你有selenium經驗,直接上手。

Appium架構原理

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

  • 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來在設備上執行自動化。

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

Appium服務器

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

Bootstrap.jar。

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

Appium客戶端。

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

Appium組件

Appium Server

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

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

技術分享圖片

1、Appium簡介