安卓appUI自动化测试框架(基于uiautomator2.0)

前言:目前比较流行的androidUI自动化实现方式有uiautomator和appium两种uiautomator是google提供的框架,经历了1.0和2.0版本,1.0版本和appium比较像(1.0基本没人用了),2.0版本是基于安卓app单元测试框架来实现的,用androidStudio来写,写在androidTest目录下,用单元测试的方式执行测试,属于android工程,打出...
摘要由CSDN通过智能技术生成

前言:

目前比较流行的androidUI自动化实现方式有uiautomator和appium两种

uiautomator是google提供的框架,经历了1.0和2.0版本,1.0版本和appium比较像(1.0基本没人用了),2.0版本是基于安卓app单元测试框架来实现的,用androidStudio来写,写在androidTest目录下,用单元测试的方式执行测试,属于android工程,打出来是apk包,安装在手机上就可以测试,可以脱离电脑,电脑之只需要触发一下就可以。因为uiautomator2.0是安卓工程,所以只能用java来写。

appium需要的环境条件比较复杂,完全依赖电脑,需要在电脑上装一大推东西(appium客户端、node.js环境、androidSdk、java环境或者python环境),用eclipse或者idea等IDE写成java工程来执行测试,打出来是一个jar包。appium支持的语言比较多(java、python、js等)

框架元素:

jenkins、github、tomcat、代码工程(junit4+Email+钉钉机器人+html报告+uiautomatorAPI封装)

效果:

html报告

钉钉消息(和接口这个模版类似,可以自己设计,把数据统计对就行)

分别介绍:

一、github

在github新建一个远程仓库,使用一个默认的master分支就行,测试人员在自己的电脑用sourcetree建立本地仓库并关联远程仓库,每次写完代码都提交、推送到远程仓库。

二、gradle

下载适合的版本,将代码拉下来后,用于自动打成apk包,也可以让jenkins自动下载

三、jenkins

部署在linux或者windows或者mac电脑上,这里讲以windows作为服务器

1、配置androidSdk环境变量、gradle环境变量

 

2、配置git(从git拉取最新的测试代码)

3、配置gradle(从git把代码拉下来后,打成apk包)

4、win命令流程:删除上次测试结果文件夹、删除上次测试日志、push自动化测试apk到手机并且安装、清除缓存区日志、后台运行appLogcat.bat(删除上次日志文件,开始收集本次测试日志)、开始触发执行测试、测试结束后等待3秒、后台运行killLogcat.bat(结束log收集)、再等待3秒、pull出日志文件到电脑、pull出截图到电脑、pull出html报告到电脑

rd /s /q C:\Users\BabyFS\Desktop\appFunction\appFunctionPicture
del /f /s /q C:\Users\BabyFS\Desktop\appFunction\appLogcat.txt
adb push D:\jenkins\jenkinsHome\workspace\appFunction\app\build\outputs\apk\debug\app-debug.apk /data/local/tmp/com.uiautomator.babyfs
adb shell pm install -t -r "/data/local/tmp/com.uiautomator.babyfs"
adb push D:\jenkins\jenkinsHome\workspace\appFunction\app\build\outputs\apk\androidTest\debug\app-debug-androidTest.apk /data/local/tmp/com.uiautomator.babyfs.test
adb shell pm install -t -r "/data/local/tmp/com.uiautomator.babyfs.test"
adb logcat -c
start /b D:\tools\appFunction\appLogcat.bat
adb shell am instrument -w -r   -e debug false -e class 'com.uiautomator.babyfs.RunInsideCase#app' com.uiautomator.babyfs.test/android.support.test.runner.AndroidJUnitRunner
ping /n 3 127.1 >nul
start /b D:\tools\appFunction\killLogcat.bat
ping /n 3 127.1 >nul
adb pull sdcard/appLogcat.txt C:\Users\BabyFS\Desktop\appFunction
adb pull sdcard/appFunctionPicture C:\Users\BabyFS\Desktop\appFunction
adb pull sdcard/app.html C:\Users\BabyFS\Desktop\appFunction

appLogcat.bat

adb shell < D:\tools\appFunction\appLogcat.txt

appLogcat.txt

rm -rf /sdcard/appLogcat.txt
touch /sdcard/appLogcat.txt
nohup logcat | grep "uiautomatorTest" > sdcard/appLogcat.txt &

killLogcat.bat

adb shell < D:\tools\appFunction\killLogcat.txt

 

killLogcat.txt

killall -9 logcat

四、uiautomatorAPI封装

1、工程目录

2、KeyWord类代码(uiautomatorAPI封装)

package com.uiautomator.babyfs;

import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.RemoteException;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.BySelector;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject2;
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.support.test.uiautomator.UiScrollable;
import android.support.test.uiautomator.UiSelector;
import android.support.test.uiautomator.Until;
import android.util.Log;

import org.junit.runner.RunWith;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static android.os.SystemClock.sleep;
import static com.uiautomator.babyfs.Constants.Path_picture;
import static com.uiautomator.babyfs.Constants.TAG;
import static com.uiautomator.babyfs.Constants.layout;
import static com.uiautomator.babyfs.GenerateReport.contentFail;
import static com.uiautomator.babyfs.GenerateReport.contentPass;

@RunWith(AndroidJUnit4.class)
public class KeyWord {

    static Instrumentation instrumentation;
    static UiDevice mDevice;
    static Context context;

    p
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌翻天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值