zoukankan      html  css  js  c++  java
  • 【Appium】app自动化环境搭建

    app自动化环境搭建Appium

    1. 安装node.js

    (1) 安装node.js

    我的电脑是64位的,选择64位的安装包

    (2) 验证安装node.js是否安装成功

    运行--> cmd-->  输入 node -v ,显示版本号,说明安装成功;若安装失败,检查电脑版本是否与安装版本一致

     

    2.配置Android SDK环境

    (1) 下载adb压缩包,并解压到D盘根目录

    adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过ADB我们可以在Eclipse中通过DDMS来调试Android程序,说白了就是debug工具。

    我的电脑是64位,所以下载64位的adb

       

      直接解压就可以了

      

    (2) 系统变量--->新建  ANDROID_HOME

    D:adt-bundle-windows-x86_64sdk    

    (3) 系统变量--->编辑  Path -->在末尾增加如下配置

    ;%ANDROID_HOME% ools;%ANDROID_HOME%platform-tools

     

    (4) 验证Android SDK是否安装成功

     运行--> cmd--> 输入adb , 显示如下内容,说明 android sdk 安装成功

    3.安装Appium

    (1) 下载Appium

    官网下载地址

    https://bitbucket.org/appium/appium.app/downloads/

    我的是这个版本

       

    (2) 解压Appium安装包,点击 appium-installer.exe 安装Appium

     

    (3) 配置 Appium 环境变量

    系统变量--->编辑  Path -->在末尾增加如下配置

    ;D:Program Files (x86)Appium ode_modules.bin

     

    (4) 验证Appium 是否安装成功

    输入appium-doctor (中间没有空格) 检查appium 做自动化需要依赖的环境,ANDROID_HOME,JAVA_HOME等是否都已准备好

     

    4. 开发自动化脚本的思路

    (1) 添加配置

     

    deviceName

    打开夜神模拟器

    打开命令行窗口,输入adb devices

     

    appPackage

    打开夜神模拟器

     

    打开夜神模拟器 - 微信- 点击登录按钮 (为了拿到登录的appPackage)

     

    打开命令行窗口,输入 adb shell dumpsys activity | find "mFocusedActivity"

    微信登录的appPackage 就是第三个 com.tencent.mm.ui

     

    appActivity

    Activity 就是一个页面

    appActivity就是 com.tencent.mm.ui.LauncherUI

     

    (2) 创建驱动

    详见下图:

     

    (3) 找到页面元素

    进入目录 D:adt-bundle-windows-x86_64sdk ools

    执行 uiautomatorviewer.bat

     

     打开是这样的:

     点击如下按钮,可录制

    选中页面元素 “登录”按钮,右边找到 resource-id ,相当于javascript中getElementById("cdi")

     

     

     

    找到提示语对应的id (和期望值做对比)

     

    (4) 操作页面元素来模拟用户的操作

     

    (5) 通过断言和日志查看测试结果

    初步的代码如下,运行报错,

    原因是要等待几秒,页面加载,才能拿到页面元素

    代码详情:

    package com.ningmeng;

    import java.net.MalformedURLException;

    import java.net.URL;

    import org.apache.log4j.Logger;

    import org.junit.After;

    import org.junit.Assert;

    import org.junit.Before;

    import org.junit.Test;

    import org.openqa.selenium.remote.DesiredCapabilities;

    import io.appium.java_client.AppiumDriver;

    import io.appium.java_client.android.AndroidDriver;

    public class WechatLoginTestDemo {

    private AppiumDriver driver;

    private Logger logger = Logger.getLogger(WechatLoginTestDemo.class);

    @Before

    public void init() throws MalformedURLException{

    //添加配置(设备编号:deviceNameappappPackageapp打开的第一个界面:appActivity)

    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();

    logger.info("添加配置");

    desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001"); // 在命令窗口中输入   adb devices

    desiredCapabilities.setCapability("appPackage", "com.tencent.mm");// 在命令窗口中输入  adb shell dumpsys activity | find "mFocusedActivity"

    desiredCapabilities.setCapability("appActivity", "com.tencent.mm.ui.LauncherUI"); // 在命令窗口中输入  adb shell dumpsys activity | find "mFocusedActivity"

    //创建驱动

    logger.info("创建驱动");

    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities); //http://ip:4723/wd/hub (固定写法)

    logger.info("成功打开了第一个app界面");

    System.out.println("创建完驱动,成功打开了app的第一节界面");

    }

    /**

     * 测试手机号,密码都错误的登录情况

     * 需求文档给出的错误提示信息:“账号信息错误,请重新填写”

     * @throws InterruptedException

     */

    @Test

    public void test001() throws InterruptedException{

    logger.info("**************************WechatLoginTest test001() start************************************");

    Thread.sleep(10000);

    //找到页面元素

    logger.info("找到登录按钮");

    driver.findElementById("cdi").click();

    //操作页面元素来模拟用户的操作

    String mobilephone = "1881398944";

    String password = "111111";

    logger.info("输入手机号"+mobilephone+",和密码:"+password);

    driver.findElementById("brm").sendKeys(mobilephone);

    driver.findElementById("gr").sendKeys(password);

    logger.info("输入信息后,点击登录按钮");

    driver.findElementById("aax").click();

    //通过断言和日志来查看测试结果

    Thread.sleep(10000);

    logger.info("获取提示信息");

    String actual = driver.findElementById("br4").getText();

    System.out.println("实际值:"+actual);

    String expected = "账号信息错误,请重新填写";

    logger.info("实际值:"+actual);

    logger.info("期望值:"+expected);

    String msg = "期望值和实际值一样,没有bug";

    try {

    Assert.assertEquals(expected, actual);

    } catch (AssertionError e) {

    msg = "发生异常,真是值和期望值不一致,没有通过测试,发现bug";

    }

    logger.info(msg);

    logger.info("**************************WechatLoginTest test001() end************************************");

    }

    @After

    public void finish(){

    driver.quit();

    logger.info("关闭驱动");

    }

    }

  • 相关阅读:
    PAT 顶级 1010 Lehmer Code (35 分)
    PAT 顶级 1010 Lehmer Code (35 分)
    CCF CSP 201909-4 推荐系统
    CCF CSP 201909-4 推荐系统
    Codeforces 1251C Minimize The Integer
    Codeforces 1251C Minimize The Integer
    CCF CSP 201803-4 棋局评估
    CCF CSP 201803-4 棋局评估
    【DP_树形DP专题】题单总结
    【DP_树形DP专题】题单总结
  • 原文地址:https://www.cnblogs.com/maidou199006/p/7492327.html
Copyright © 2011-2022 走看看