Appium是基於如下的四個理念設計來知足移動平臺測試自動化的要求的:html
1)您不該該由於須要自動化測試您的應用而不得不以任何形式去從新編譯或者修改你的appjava
2)您不該該把本身固定在一門特定的語言和一個特定的框架上去實現和運行你的測試node
3)當說到測試自動化APIs的時候,一個移動測試框架不該該作「從新發明輪子」的事情,python
4)一個移動測試自動化框架應該是開源的,不管是在精神上,實際上,仍是名義上!android
Appium在不一樣平臺中使用了標準的自動化APIs,因此在跨平臺時,不須要從新編譯或者修改本身的應用。web
Appium支持Selenium WebDriver支持的全部語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可使用Selenium WebDriver的Api。Appium支持任何一種測試框架.Appium實現了真正的跨平臺自動化測試。(本文主要介紹Python的用法)session
Appium 是一個用Node.js編寫的HTTP server,它建立、並管理多個 WebDriver sessions 來和不一樣平臺交互,如 iOS ,Android等等. 架構
Appium 開始一個測試後,就會在被測設備(手機)上啓動一個 server ,監聽來自 Appium server的指令. 每種平臺像 iOS 和Android都有不一樣的運行、和交互方式。因此Appium會用某個樁程序「侵入」該平臺,並接受指令,來完成測試用例的運行。app
1) jdk(步驟再也不囉嗦)框架
2) android SDK,下載地址:http://developer.android.com/sdk/index.html,下載sdk tools,可能須要FQ,提供一個國內下載地址:http://www.androiddevtools.cn/
3) appium,下載地址:http://appium.io/
4) nodejs,下載地址:https://nodejs.org/en/
5) appium lib,下載地址:http://appium.io/downloads.html
選擇Python版本的Lib: Appium-Python-Client-0.22.tar.gz
因爲Appium依賴於Selemium,因此還要下載 Selemium Lib: selenium-2.53.2.tar.gz https://pypi.python.org/pypi/selenium
6) python, 下載地址:https://www.python.org/, 下載2.X 的版本。
上述軟件都準備好後,則進入搭建步驟。
將上述軟件依次安裝。
1) android sdk安裝完畢後,須要配置環境變量
新建ANDROID_HOME D:\ProgramFiles (x86)\Android\android-sdk
在PATH中添加:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
2) nodejs安裝完畢後,須要配置環境變量
在PATH中添加:D:\Program Files\nodejs;
3) appium安裝完畢後,須要配置環境變量
D:\Program Files (x86)\Appium\node_modules\.bin;
4) 配置好後,啓動cmd,
輸入node -v,查看node安裝版本
輸入appium-doctor檢查appium的安裝環境是否成功
5) 安裝Python,配置環境變量,如C:\Python27,檢查是否設置成功,
coding=utf-8 from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '4.4.2' 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) driver.find_element_by_name("1").click() driver.find_element_by_name("5").click() driver.find_element_by_name("9").click() driver.find_element_by_name("9").click() driver.find_element_by_name("5").click() driver.find_element_by_name("+").click() driver.find_element_by_name("6").click() driver.find_element_by_name("=").click() driver.quit()