appium 环境搭建
1、Appium 理念
Appium是基于以下的四个理念设计来满足移动平台测试自动化的要求的:
1)您不应该因为需要自动化测试您的应用而不得不以任何形式去重新编译或者修改你的app
2)您不应该把自己固定在一门特定的语言和一个特定的框架上去实现和运行你的测试
3)当说到测试自动化APIs的时候,一个移动测试框架不应该做“重新发明轮子”的事情,
4)一个移动测试自动化框架应该是开源的,无论是在精神上,实际上,还是名义上!
2、使用Appium进行自动化测试有两个好处
Appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。
Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架.Appium实现了真正的跨平台自动化测试。(本文主要介绍Python的用法)
3、Appium架构
Appium 是一个用Node.js编写的HTTP server,它创建、并管理多个 WebDriver sessions 来和不同平台交互,如 iOS ,Android等等.
Appium 开始一个测试后,就会在被测设备(手机)上启动一个 server ,监听来自 Appium server的指令. 每种平台像 iOS 和Android都有不同的运行、和交互方式。所以Appium会用某个桩程序“侵入”该平台,并接受指令,来完成测试用例的运行。
Appium环境搭建(Android)
1、首先需要准备
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 的版本。
上述软件都准备好后,则进入搭建步骤。
2、安装、配置
将上述软件依次安装。
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()