• 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("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 ,就可以得到包名和类名

  • 相关阅读:
    day16(链表中倒数第k个结点)
    day15(C++格式化输出数字)
    day14(调整数组顺序使奇数位于偶数前面 )
    day13(数值的整数次)
    day12(二进制中1的个数)
    day11(矩形覆盖)
    day10(跳台阶)
    hadoop 又一次环境搭建
    Hive 学习
    hadoop -工具合集
  • 原文地址:https://www.cnblogs.com/alwayswyy/p/5051760.html
Copyright © 2020-2023  润新知