◆版權聲明:本文出自胖喵~的博客,轉載必須注明出處。
轉載請注明出處:http://www.cnblogs.com/by-dream/p/5124340.html
前言
同樣的,這一篇我要介紹的也是一款UI自動化工具,地址:http://appium.io/
第三方(非谷歌)研發的開源測試工具,說到這里也許有人會問 “為什么已經介紹了Uiautomator還要介紹它呢?”,我們就說說Appium有哪些不一樣的地方:
1、appium可以測試原生的、混合的、或者是移動端的web項目;
2、appium不僅支持測試Android應用,還可以測試ios;
3、appium跨平台,可以運行在Windows或者Linux上;
4、appium支持多種語言,你可以用你自己熟悉的語言,如java、ruby、python等來完成你的腳本。
它的底層架構是:
網上找了兩段解釋,說的應該比較清楚:
一、Appium采用底層驅動商提供統一API,就是WebDriver API。
WebDriver(也稱Selenium WebDriver)其實是一個C/S架構的協議,叫做JSON Wire Protocol。通過這個協議,用任何語言寫成的客戶端都可以發送HTTP請求給服務器。這就意味着你可以自由選擇你想要使用的測試框架和執行器,也可以將任何包含HTTP客戶端的庫文件加入到你的代碼中。換句話說,Appium的WebDriver不是一個技術上的測試框架,而是一個自動化庫。
二、在Android端,WebDriver利用Bootstrap.js,最后通過調⽤用UiAutomator的命令,實現App的自動化測試。UiAutomator測試框架是Android SDK⾃自帶的App UI自動化測試Java庫。另外由於UiAutomator對H5的⽀支持有限,appium引入了chromedriver來實現基於H5的自動化。
1.左邊的WebDriver script是我們的selenium測試腳本
2.中間是起的Appium的服務,Appium在這邊起了一個Server(4723端口),跟seleniumWebdriver測試框架類似,Appium⽀支持標准的WebDriver JSONWireProtocol 。在這里提供了一套web服務,Appium Server接收web driver 標准請求,解析請求內容,調⽤用對應的框架響應操作。如:腳本發送一個點擊按鈕的請求給appium server,
3. appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上.Bootstrap 接收appium 的命令(4724端口),最終通過調⽤用UiAutomator的命令來實現。
4.最后執⾏行的結果由Bootstrap返回給appium server
5.另外,appium還用到了chromedriver來⽀支持基於H5(webview)的測試。
了解完基本的一些之后,就可以環境搭建了。
環境搭建
給我的感覺是Appium的腳本並沒有多么的難寫,但是它的環境搭建絕對是特別復雜的。反正搭建過程我是用了很久。下面是我過程中的一些截圖,部分地方我會進行說明:
使用npm安裝appium:
檢查appium所需要的環境是否可以了:
這里中了一槍,配置環境變量后面不用分號
安裝python:
啟動客戶端:
運行case
1、打開cmd,輸入Appium
2、寫如下腳本
from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '4.4' desired_caps['deviceName'] = 'Android Emulator' desired_caps['appPackage'] = 'com.android.calculator2' desired_caps['appActivity'] = '.Calculator' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) el = driver.find_element_by_android_uiautomator('text("7")') el.click() e2 = driver.find_element_by_android_uiautomator('text("+")') e2.click() e3 = driver.find_element_by_android_uiautomator('text("8")') e3.click() e3 = driver.find_element_by_android_uiautomator('text("=")') e3.click()
3、直接運行腳本,即可看到操作計算器的步驟
Appium個人還是不太習慣用,因為寫腳本的方法其實也是類似Uiautomator,因此沒介紹篇幅較短,只是簡單的體驗了一把。