2019独角兽企业重金招聘Python工程师标准>>>

1、搭建Android环境

http://blog.csdn.net/jlminghui/article/details/39582895

注:需要设置系统变量“ANDROID_HOME”。

2、安装Node.js

http://www.nodejs.org/download/

下载相关操作系统的版本

安装过程,一路“Next”。

3、安装Appium

(1)下载地址:http://appium.io/ 下载完毕后解压到pc本地,将压缩包里有appium.cmd文件的路径设置到环境变量path中。

(2)进入命令行,输入appium-doctor

另外也可在线安装(可选,网络不好还是选上面的好些)

(1)进入命令行

(2)输入命令:npm install -g appium

注:翻墙下载比较靠谱

(3)等待更新完毕

(4)安装后验证:appium-doctor

4、创建虚拟机或使用实际设备

创建一个4.4.2的虚拟机

不熟悉这块的朋友参考:http://blog.csdn.net/jlminghui/article/details/39582895

5、创建Java工程(Eclipse)

推荐使用maven工程,直接可以maven导入。方法如下

1.创建一个maven工程

2.百度maven中央仓库,在中央仓库搜索selenium、appium、junit,找到对应的依赖加入到pom.xml,就可以不用再去对应的官网下载包了,又麻烦又慢

<dependencies>  <dependency>  <groupId>org.seleniumhq.selenium</groupId>  <artifactId>selenium-server</artifactId>  <version>2.48.2</version>  </dependency>  <dependency>  <groupId>org.seleniumhq.selenium</groupId>  <artifactId>selenium-java</artifactId>  <version>2.48.2</version>  </dependency>  <dependency>  <groupId>io.appium</groupId>  <artifactId>java-client</artifactId>  <version>3.2.0</version>  </dependency>  <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.12</version>  </dependency>  </dependencies>  

一般方法
(1)导入Selenium类库

http://selenium-release.storage.googleapis.com/2.44/selenium-java-2.44.0.zip

http://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar

(确认2014.11.14有效,如无效请访问http://docs.seleniumhq.org/download/ 进行下载 )

注:需要导入两个,一个是客户端,一个是服务端,服务端库不导入会导致运行时报错。

(2)导入Appium类库

https://search.maven.org/remotecontent?filepath=io/appium/java-client/1.2.1/java-client-1.2.1.jar

(确认2014.11.14有效,如无效请访问http://appium.io/downloads.html  进行下载 )

注:此处如果选择下载最新的2.0以上的版本,会导致编译new AppiumDriver时报错。解决办法见:

http://blog.csdn.net/zhubaitian/article/details/39717889 

6、运行Appium示列

(1)下载示例程序

https://github.com/appium/sample-code/tree/master/sample-code/apps/ContactManager

上面链接中下载ContactManager.apk

(点击下方的RAW按钮下载)

并将该apps放到当前项目的apps目录下(目录自行创建)

(2)下载示例程序测试

地址:https://github.com/appium/sample-code/tree/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium

java文件为“AndroidContactsTest.java”

(点击下方的RAW按钮下载)

内容经过更改如下:

package com.Demo;  import io.appium.java_client.AppiumDriver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;  import java.io.File;
import java.net.URL;
import java.util.List;  public class AppDemo {  private AppiumDriver driver;  @Before  public void setUp() throws Exception {  // set up appium  File classpathRoot = new File(System.getProperty("user.dir"));  File appDir = new File(classpathRoot, "apps");  File app = new File(appDir, "ContactManager.apk");  DesiredCapabilities capabilities = new DesiredCapabilities();  capabilities.setCapability(CapabilityType.BROWSER_NAME, "");  capabilities.setCapability("platformName", "Android");  capabilities.setCapability("deviceName","Android Emulator");  capabilities.setCapability("platformVersion", "4.4");  capabilities.setCapability("app", app.getAbsolutePath());  capabilities.setCapability("appPackage", "com.example.android.contactmanager");  capabilities.setCapability("appActivity", ".ContactManager");  driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);  }  @After  public void tearDown() throws Exception {  driver.quit();  }  @Test  public void addContact(){  WebElement el = driver.findElement(By.name("Add Contact"));  el.click();  List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");  textFieldsList.get(0).sendKeys("Some Name");  textFieldsList.get(2).sendKeys("Some@example.com");  driver.swipe(100, 500, 100, 100, 2);  driver.findElementByName("Save").click();  }
}  

(3)启动android4.4.2虚拟机

(4)命令行启动后输入:appium

(5)appium启动到对应设备:appium -a 127.0.0.1 -p4723 -Uemulator-5554 (-a表示ip,-p表示端口,默认都是4723,-U表示设备的udid,可以通过adb devices查看)

(6)项目右键>“Run As”>“JUnit Test”(选择Eclipse JUnit Launcher)

以上步骤确认可以运行成功,但由于笔者也是刚接触Appium,可能存在遗漏,也请大家帮忙指出,另外也可以使用maven和相关Eclipse插件会更方便些,网上例子很多可自行查找。

7、Appium遇到问题

问题一:
问题org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

解决办法:
(1)启动appium

(2)运行cmd 输入 adb devices  查看UDID 如图:

(3)再在cmd中输入 appium -a 127.0.0.1 -p4723 -Uemulator-5554 (-a表示ip,-p表示端口,默认都是4723,-U表示设备的udid 可以通过appium -h查看更多命令)

(4)如果如下图所示 就表示 appium服务启动成功了,注意这个窗口不要关闭 因为这是appium的服务 关了就关了服务,后面过程无法执行,而且这个窗口也是 日志输出的窗口用于排错。

问题二:
问题:org.openqa.selenium.SessionNotCreatedException: A new session could not be created.
(Original error: Device ZX1C622BU3 was not in the list of connected devices)
(WARNING: The server did not provide any stacktrace information)

解决办法:可能手机驱动未安装成功,虽然在adb devices中可以正常查看到devices

问题三:
问题:org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Waited 20 secs for selendroid server and it never showed up)

解决办法:
查看包的签名的和Activity
例如:APP从I5版本后启动界面的capabilities.setCapability("appActivity", ".CordovaApp");
从I5版本后Acitivity变成了MainActivity
capabilities.setCapability("appActivity",".MainActivity");// 被测app的Activity类

问题四:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)

解决方法:
查看设备上是否安装Selendroid,或者升级Selendroid

IOS问题五:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)

解决办法:IOS_webkit_debug_proxy –c –[Udid] -d

问题六

error: Couldn't start Appium REST http interface listener. Requested port is already in use. Please make sure there's no other instance of Appium running already.

因为端口被node占用,可以用如下退出node

找出PID命令::netstat -ano|findstr "7922"   (这个4723是被占用的端口,我们需要先找该占用该端口程序的PID)

停止PID命令:taskkill /pid 8828 /f

8、相关工具

工具一

SDK\tools下的:uiautomatorviewer

作用:查看元素ID、Name、坐标

工具二

SDK\build-tools\23.0.0下的:aapt

作用:查看启动包名和首页ACTIVITY

转载于:https://my.oschina.net/u/2391658/blog/706576

Android自动化测试工具Appium环境搭建相关推荐

  1. .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建

    .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建 原文:.Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建 闲来没事做,还是想再学习一门新的技术,无论何时 ...

  2. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  3. python手机端编程环境_Python + Appium 环境搭建

    ---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好 ...

  4. day17 appium环境搭建

    注意事项: 步骤一 手机链接电脑时候,手机或者电脑安装有第三方手机助手,都会链接不上 获取包名: 在cmd当中输入命令 aapt dunp badging + 包名路径 找到类似于package: n ...

  5. Python + Appium 环境搭建

    ---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好 ...

  6. Appium环境搭建和检测

    Appium Appium优点 开源 跨架构:NativeApp.Hybird App.Web App 跨设备:Android.iOS.Firefox OS 不依赖源码 使用任何WebDriver 兼 ...

  7. appium环境搭建(10)

    appium环境搭建比较麻烦,搭建之前先看下http://blog.csdn.net/sunfengye/article/details/77494098,能正常启动模拟器,jdk环境变量配置成功,s ...

  8. 【Appium】验证appium环境搭建是否成功并考虑脚本需要包含的参数

    前言:接上一篇的Appium环境搭建,本篇主要通过脚本去验证环境搭建的正确,以及思考我们在编写脚本时需要考虑的几个问题. 目录 一.编写脚本需要考虑的因素 二.从代码来分析因素 2.1.使用的Appi ...

  9. Mac OS下Appium环境搭建及Genymotion模拟器安装

    说明:本机Mac本上已经安装的有:Python3.JDK.Node.js. Selenium Appium环境搭建 Step1:安装Appium Python Client库 1,命令:pip ins ...

最新文章

  1. 汇编寄存器(内存访问)基础知识之三---mov指令
  2. 版本信息文件、虚拟环境创建
  3. 用Java API实现HDFS操作(三)问题汇总
  4. 解决浏览器下载excel文件时显示“文件已损坏”
  5. c++解释模式interpreter
  6. Python学习笔记__5章 模块
  7. JSON语法之JSON数组
  8. (写给应届生)学松下幸之助找工作
  9. 计算机网络在地理信息系统中应用,计算机网络在地理信息系统中有哪些应用?...
  10. 华为Mate X2黄牛价已超两万,结果小伙子没拿稳,成全网首摔?
  11. 深度学习的半精度浮点数的运用
  12. Mysql漏洞修复方法思路及注意事项
  13. 在J2ME和WAP中实现电话呼叫功能
  14. 微信小程序准备阶段。(一)
  15. 华擎 j3455 时钟 linux,经验 篇一:华擎J3455 硬改MAC地址
  16. 9、网友问答----有关清零问题------------------labview宝典
  17. php输出100以内素数(质数)
  18. [问题]Make sure that `gem install pg -v '0.17.1'` succeeds before bundling.
  19. 游戏付费用户RFM分析案例
  20. 定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。

热门文章

  1. 80x86汇编按二进制输出数字的程序图解和代码解释
  2. Python 列表和元组
  3. Adobe Flash Builder 4.6 开发环境详解
  4. Could not calculate build plan: Plugin org.apache.maven.plugins:maven-war-plugin:2.4
  5. JavaScript中split() 使用方法
  6. 如何用CMD开启3389与查看3389端口
  7. C# 参数按照ASCII码从小到大排序(字典序)
  8. 上证所Level-2在信息内容和传送方式方面的比较优势[逐笔数据与分笔数据的根本区别]...
  9. 千图成像_「原创」千图成像,用PS给人物制作全图的拼人像
  10. 二分类排斥子和鞍点的准确率的表达式pa