详情参照   http://www.cnblogs.com/puresoul/p/4696825.html#3326873   自己练习一遍

前言:

appium环境搭建参照另一篇博客:http://www.cnblogs.com/alwayswyy/p/4976933.html  ,主要是安装node.js,配置 Android  SDK的各种环境,以及安装客户端的appium。

接下来需要真实的构建一个appium项目来实现手机app(现在以安卓手机为例)的自动化!!!

一.在eclipse中创建一个java项目(文件配置):

 1、打开Eclipse,【File】-->【New】-->【Project】

 2、选择【Java Project】-->【Next】

 3、输入工程名称Appium_demo,点击【Finish】

4、右键点击工程 New-Folder,新建两个文件夹:apps和libs

  • 将ContactManager.apk 复制粘贴到apps文件夹下
  • 将以下4个jar包复制粘贴到libs文件夹下,并右键--》build path    (非常重要,少一个jar包运行就会报错!!!!!!)

Selenum类库:1) selenium-server-standalone-2.44.0.jar          2) selenium-java-2.44.0.zip

Appium类库: 1) java-client-1.2.1.jar

java解析json的类库: 1)json.org.jar

特别提示:由于之前没有缺少json.org.jar ,导致运行时addContact()这个方法报错:java.lang.NoClassDefFoundError: org/json/JSONException  

所以特别注意不要少这个jar包  !!! 

二.创建package和class

1、在src文件夹上右键单击,【New】-->【package】,输入包名:com.wyy.demo,点击【Finish】

2、在package下新建类(就是单纯的java类):ContactsTest.java,(之后用 android  unit test 运行即可),

ContactsTest.java代码如下:

package com.wyy.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 ContactsTest {
private AppiumDriver driver;
@Before
public void setUp() throws Exception {
//设置apk的路径,获得程序当前路径System.getProperty("user.dir"),
        File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apps");
File app = new File(appDir, "ContactManager.apk"); //设置自动化相关参数,运行平台为Android(或ios),与browser_name相矛盾,不能共存,
//运行的设备为模拟器 Android Emulator
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator"); //设置安卓系统版本,要和启动的模拟器平台保持一致
capabilities.setCapability("platformVersion", "4.3");
//设置apk路径
capabilities.setCapability("app", app.getAbsolutePath()); //设置app的主包名和主类名,包名和类名稍后介绍如何获取
capabilities.setCapability("appPackage", "com.example.android.contactmanager");
capabilities.setCapability("appActivity", ".ContactManager"); //初始化,在模拟器上启动安装apk
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
} @Test
public void addContact(){
//添加一个联系人到app中
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();
} @After
public void tearDown() throws Exception {
driver.quit();
}
}

创建完毕后,项目结构如下:

三.启动模拟器,版本为 4.3 

点击eclipse的AVD,启动一个模拟器,版本为 4.3,启动完毕后执行 cmd命令: adb devices  ,启动成功如下所示:

四.启动appium

直接打开appium,点击后上方的启动三角,启动appium node server,启动成功结果如下:

五.运行 测试案例

 1、在eclipse中,项目右键>【Run As】>【JUnit Test】,对ContactsTest.apk的操作将会自动执行,运行过程截图如下:

此时第一个appium项目就运行成功啦!!!!!!

PS:下面介绍一个如何反编译获取apk的包名(appPackage)和类名  (appActivity)

1.下载 dex2jar-0.0.9.15  (用来将 classes.dex 反编译成jar 文件)和  jd-gui  (打开 classes.dex 反编译后的jar 文件)

2.找到测试的apk,后缀改成 .zip,并解压

3.将解压后的目录下的  classes.dex   放到   dex2jar-0.0.9.15 目录下的 dex2jar.bat ,保持  classes.dex    和  dex2jar.bat 同目录

4.在cmd下运行:dex2jar.bat    classes.dex  即可得到 classes.dex.dex2jar.jar文件

5.执行jd-gui.exe,打开反编译后的文件   classes.dex.dex2jar.jar ,就可以得到包名和类名

appium实例编写(1)---以ContactsTest.apk 操作为例的更多相关文章

  1. 开始一个Android的appium实例

      1.查看Android的应用包名和activity的方法   (网上有很多种方法,这里应用的是查看日志的方法) CMD中输入>adb logcat -c                   ...

  2. Android的appium实例

    1.查看Android的应用包名和activity的方法   (网上有很多种方法,这里应用的是查看日志的方法) CMD中输入>adb logcat -c                   &g ...

  3. JS练习实例--编写经典小游戏俄罗斯方块

    最近在学习JavaScript,想编一些实例练练手,之前编了个贪吃蛇,但是实现时没有注意使用面向对象的思想,实现起来也比较简单所以就不总结了,今天就总结下俄罗斯方块小游戏的思路和实现吧(需要下载代码也 ...

  4. Adroid APPIUM实例步骤

      1.下载eclipse 2.安装java 配置环境变量 3.eclipse 安装adt android development tools 4.android sdk manager 安装tool ...

  5. 一台机器同时运行多个appium实例

    测试需要同时在多个android设备上运行,就需要启动多个appium 第一台是运行微信: DesiredCapabilities capabilities = new DesiredCapabili ...

  6. python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

  7. python实例编写(2)--等待,一组对象,层级元素,frame对象处理

    一.设置等待 #coding=utf-8 from selenium import webdriver from selenium.webdriver.support.ui import WebDri ...

  8. Appium之编写H5应用测试脚本(切换到Webview)

    App使用H5编写,默认方式找不到元素.启动后获取所有上下文,找到webivew_xxxx的,然后进行切换. 源码: package MyAppium; import io.appium.java_c ...

  9. SaltStack系列(四)之实例编写

    前面已经介绍的够多了,这里来让我们写一些完整的实例来梳理一下. 强调一下,sls文件的抒写格式都是"-"后面跟一个空格,然后后面跟参数: 然后后面再跟一个空格,然后是要填写的值.但 ...

随机推荐

  1. ReactiveSwift源码解析(十二) MutableProperty基本代码实现

    前两篇博客我们分别聊了ReactiveSwift框架中的负责标记对象的生命周期的类Lifetime以及负责原子性操作的Atomic类的具体代码实现.前两篇博客之所以聊Lifetime以及Atomic的 ...

  2. 前后端分离(手)-- 使用mock.js(好样的)

    ## 前言: 本篇博文昨天七夕写的,一天下来被虐得体无完肤,苦逼的单身狗只能学习,对!我爱学习,关掉朋友圈,并写了一篇博文发泄发泄.这次写mock.js的使用,能使前后端分离,分离,分离,重要的是说三 ...

  3. Intellj IDEA常用快捷键

    1.生成Getter.Setter方法:Alt + Insert

  4. Linux常用命令简单总结

    Liunx常用命令 1. 文件及目录管理 1.1. ls:显示目录 参数及说明 空:补显示隐含文件 -a:显示所有文件 -l:显示详细列表 1.2. chgrp:设置文件组(root权限) 用法示例 ...

  5. [2012-05-31]awk去重复项

    参考http://bbs.chinaunix.net/thread-2309494-1-1.html 10.awk '! a[$0]++' 怎么理解? 这是一个非常经典的去重复项的awk语句,虽然短小 ...

  6. java面向对象(一)

    [toc] 面向对象 我们都说java是面向对象的编程语言,那什么是面向对象呢?什么是类呢?什么是方法呢? 类.对象.方法 类是对象的抽象定义,对象是类的具体实例. 类:指的是一类东西,比如汽车,人类 ...

  7. jumpserver-0.3.2 堡垒机环境搭建(图文详解)

    下载安装包:https://github.com/jumpserver/jumpserver.git 解压 三.执行快速安装脚本 cd /opt/jumpserver/install pip inst ...

  8. java内存区域分析及java对象的创建

    java虚拟机在执行java程序的过程中会将它管理的内存区域加分为若干个的不同的数据区域. 主要包括以下几个运行时数据区域,这里就只介绍经常会用到的 1:java虚拟机栈:我们常说的堆栈,栈就是指的j ...

  9. C和C++中的名字空间和作用域

    C和C++中的名字空间和作用域 C语言中有名字空间这个概念吗? 提到名字空间(或者可能更普遍的叫法,命名空间),很可能先想到的是C++,甚至是C#.C中没有名字空间吧?一开始我也是这样认为的,直到我看 ...

  10. mkyaffs2image制作根文件系统、使用NFS挂载虚拟机目录(2)

    1.制作根文件系统及nfs烧写 1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统:① fs_mini.tar.bz2 是最小的根文件系统,里面的设备节点是事先建立好 ...