appium实例编写(1)---以ContactsTest.apk 操作为例

详情参照   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("[email protected]");
        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 ,就可以得到包名和类名

时间: 2024-10-22 10:34:19

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

开始一个Android的appium实例

1.查看Android的应用包名和activity的方法 (网上有很多种方法,这里应用的是查看日志的方法) CMD中输入>adb logcat -c >adb logcat ActivityManager:i *:s 然后操作模拟器中要测试的应用,查看日志,结果如下,cmp=应用包名/Activity 参考文件:http://blog.csdn.net/jlminghui/article/details/40622103 2.定位元素 Android SDK的一些工具可以帮助定位,在Andro

纯JAVA环境获取APK信息(包名,版本,版本号,大小,权限...),纯JAVA语言编写PC端获取APK信息

纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限... 纯Java环境获取APK信息需要两个包:AXMLPrinter2.jar 跟jdom.jar,用于反编译XML和解析XML的 项目目录 这个类是获取APK信息的 public class ApkUtil { private static final Namespace NS = Namespace.getNamespace("http://schemas.android.com/apk/res/android"); @

Adroid APPIUM实例步骤

1.下载eclipse 2.安装java 配置环境变量 3.eclipse 安装adt android development tools 4.android sdk manager 安装tools 和相应api的sdk版本  (安装api19,底部extras 安装了Android Support Library 和Google usb driver)  sdk管理器的下载代理用 mirrors.neusoft.edu.cn 80 这个代理还是比较快 5.创建虚拟机(AVD) 3.安装node

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

一.设置等待 #coding=utf-8 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from time import sleep driver=webdriver.Chrome() driver.get('http://www.baidu.com') #添加智能等待 driver.implicitly_wait(3) driver.find_element_by_i

Appium测试用例之——使用代码安装apk

一.在Java项目上新建apps文件夹,用于存放被测试的apk包,将被测apk拖放至该文件夹下: 二.新建一个类,输入代码如下: /*  *  安装应用程序ContactManager.apk  *  打开ContactManager,输入联系人姓名.邮箱,点击保存 */ package appiumtest;   import io.appium.java_client.android.AndroidDriver; import org.junit.After; import org.juni

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

App使用H5编写,默认方式找不到元素.启动后获取所有上下文,找到webivew_xxxx的,然后进行切换. 源码: 1 package MyAppium; 2 3 import io.appium.java_client.android.AndroidDriver; 4 import org.openqa.selenium.By; 5 import org.openqa.selenium.WebElement; 6 import org.openqa.selenium.remote.Desir

SSDTHook实例--编写稳定的Hook过滤函数

解说怎样写Hook过滤函数,比方NewZwOpenProcess.打开进程. 非常多游戏保护都会对这个函数进行Hook. 因为我们没有游戏保护的代码,无法得知游戏公司是怎样编写这个过滤函数. 我看到非常多奇形怪状的Hook过滤函数的写法.看得蛋痛无比. 比方: http://bbs.pediy.com/showthread.php?t=126802 http://bbs.pediy.com/showthread.php? t=126077 第一个bug: 调用这个函数 status = PsLo

第二章 mac上运行第一个appium实例

一.打开appium客户端工具 1      检查环境是否正常运行: 点击左边第三个图标 这是测试你环境是否都配置成功了 2      执行的过程中,遇到Could not detect Mac OS X Version from sw_vers output: '10.12.1', 原因是appium还没兼容10.10以上的系统 修改兼容适配之后,继续创建ios模拟器

Http请求工具实例编写(超长,比较清楚)

HTTP协议工作方式首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端.在这个通信的过程中HTTP协议在以下4个方面做了规定:1. Request和Response的格式Request格式: HTTP请求行 (请求)头 空行 可选的消息体 注:请求行和标题必须以<CR><LF> 作为结尾(也就是,回车然后换行).空行内必须只有<CR><LF>而无其他空格.在HTTP/1.1 协议中,所有的