一、准备

测试对象: 守护2.2.3
测试功能: 登录

二、逻辑与控件

1. 测试的流程:

打开app,到达欢迎界面,点击登录,输入帐号密码,登录,判断是否登录成功。

逻辑注意点:

  • 第一次打开会弹出引导页面,这个页面是另一个Activity:AboutActivity
  • 已经登录过了,就会直接到首页
  • 第一次到首页,会有一个dialog,这个会挡住首页

2. 获取控件

使用UIAutomatorViewer获取每个界面的控件。
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
引导页面的立即体验按钮id: about_go_button

欢迎页面的登录按钮id: welcome_login_btn

登录页面的登录按钮id: login_btn_login

首页页面TextView存在文字: 首页

二、编写脚本

package com.example;

import com.example.base.BaseAppium;
import com.example.base.Builder;

import org.testng.Assert;
import org.testng.annotations.Test;


/**
* 继承上一篇文章的类,里面封装了一些方法
*/
public class Login extends BaseAppium {

    /**
    * 构造器里面设置Builder,设置测试用例的参数,因为父类里面设置了默认属性了
    * 所以这里不用设置也是可以的
    */
    Login() {
        super(new Builder()
                .setAppActivity(".activity.login.WelcomeActivity")
                .setAppPath("shouhu-debug.apk")

        );
    }

    @Test(priority = 0)
    public void startTest() throws InterruptedException {

        sleep(1000);
        //没有登录按钮,不是自动登录就是第一次打开
        if(getCurrActivity().equals("AboutActivity")){
            print("有关于界面");
            for(int i=0; i<4; i++){
                swipeToLeft(500);
                sleep(500);
            }
            clickView(waitAutoById("about_go_button"),"about_go_button");
            waitAuto();
            //点击登录
            clickView(findById("welcome_login_btn"),"welcome_login_btn");
        }else if(isIdElementExist("welcome_login_btn",true)){
            print("点击登录");
            clickView(findById("welcome_login_btn"),"welcome_login_btn");
        }else{//自动登录了就输出成功,返回
            print("自动登录了,返回,结束测试");
            return;

        }

        waitAuto();

        //输入帐号密码
        inputManyText("xxxxxxx","xxxxxx");


        //点击登录
        clickView(findById("login_btn_login"),"logibtn_login");

        sleep(3);
        //点击一下左下角,避免第一次打开的指导
        press(10,getScreenHeight()-10);
        //首页是否存在,不存在就会抛出错误
        Assert.assertTrue(isNameElementExist("首页"),"判断是否到了首页");
    }

}

这个脚本是没用到模式的,耦合度机就比较高。接下来讲一个模式,

更多推荐