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()