移动端自动化简单说就是,写好操作app的程序,运行起来,自动执行程序和测试用例,输出执行结果,结果正确,测试通过。

  1. 自动化可以方便地完成安装/卸载、启动/运行、UI适配等环节,节省时间;

  2. 同一测试脚本可以适用于几乎所有Android机型,可以快速完成兼容性测试;

  3. 可以模拟数据准备,通过一些重复的操作产生简单的数据;

  4. 可以保存截图、输出log、输出错误信息;

  5. 可以长时间运行并保证数据的准确性,避免人为产生的错误;

  6. 可扩展性强

  7. ……

常见的移动自动化测试框架有: Appium、Colabash、MonkeyTalk、Robolectric、App Grader. 
网上有更多的自动化测试框架的介绍,(https://www.cnblogs.com/fqfanqi/p/6139435.html)

why Appium

  • 同时支持Android、iOS、混合app

  • 支持多语言,PHP 、Python、Ruby、C#、Clojure、Java、Objective-c、JavaScript、以及Perl

  • 能与大多数主流开发测试工具集成,可是使用任何测试框架驱动Appium

  • 不会要求测试人员修改或者重新编译待测应用

  • 有活跃社区可交流

Appium的移动自动化测试路线

一般的web自动化测试路线是:

编程语音基础 → 测试框架 → Web Driver API → 开发自动化测试项目

基于Appium移动端自动化测试的线路是:

编程语言基础 → 测试框架 → Android/iOS开发、测试基础→ Appium API → 开发移动自动化测试项目

Appium测试环境的搭建是比较繁琐的,不少开始移动端自动化的初学者一般都是死在搭建环境的沙滩上了,本文从搭建环境到简单示例,讲解一个完整的Android移动端自动化的全过程。

Appium的环境搭建 — Appium + Android + Java

前置工作

Java - Java SDK 
Android - Android SDK 
Java IDE - Intellij IDEA 
Appium : Appium

环境变量配置

  1. 配置JDK环境变量,这个搜狗一下就有具体步骤,不详细讲解了

  2. 配置Android SDK路径为ANDROID_HOME变量并在Path中添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools

  3. 配置Appium安装文件夹下的以下路径到path中(如安装在C:\Program Files (x86)\Appium): C:\Program Files (x86)\Appium和C:\Program Files (x86)\Appium\node_modules.bin

综上,需要配置Java环境变量,此外需要配置ANDROID_HOME、tools、platform-tools三个变量,Appium需要配置Appium和Appium\node_modules\.bin两个变量

验证环境

验证Java JDK安装和设置,在CMD中输入如下命令: 
Java -version 
之后展示Java版本信息就正确设置完毕了。 
验证appium是否安装配置完成并且环境变量配置成功,打开cmd,输入: 
appium-doctor 
看到有几列✔且最后展示“All Check were Successful”字样时,代表Appium就配置安装好了。 
Android SDK配置完毕后,可以试用adb命令,无异常情况则代表配置成功。

编写Android自动化测试

不知道小伙伴们有没有发现,前置工作中有个软件还一直没有使用,它就是Intellij IDEA,现在就是用到它的时候了。 
首先需要用Intellij创建一个maven项目,为啥创建maven项目呢,因为使用maven可以减少了工具包下载、配置、安装等一些列过程,具体maven项目的创建可以自行搜狗一下。创建完毕后需要在pox.xml中添加以下依赖:

<dependencies>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>2.42.1</version>

</dependency>

<dependency>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.12.4</version>

</dependency>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.8.8</version>

</dependency>

<dependency>

<groupId>io.appium</groupId>

<artifactId>java-client</artifactId>

<version>3.2.0</version>

</dependency>

<dependency>

<groupId>com.google.android</groupId>

<artifactId>android</artifactId>

<version>4.1.1.4</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

</dependencies>

之后保存好文件后,Intellij会自动加载进去这些依赖的jar包。 
之后就可以进行一个简单的Android自动化脚本的编写和测试了,下面附上对原生Android系统中计算器app的测试代码。 
Ps. 以下代码仅限于用在Android原生系统的机型使用,因为其中写死了appPackage和appActivity且@Test中写死了按钮的id,另外需要大家根据手机版本修改platformVersion属性值

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.android.AndroidDriver;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.openqa.selenium.By;

import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.URL;

public class demo1 {

private AppiumDriver driver;

@Before

public void calc() throws Exception {

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("clearSystemFiles","True");

capabilities.setCapability("androidDeviceReadyTimeout",5);

capabilities.setCapability("deviceName","hammerhead");

capabilities.setCapability("platformVersion","5.0");

capabilities.setCapability("platformName","Android");

capabilities.setCapability("appPackage", "com.android.calculator2");

capabilities.setCapability("appActivity", ".Calculator");

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

}

@After

public void tearDown() throws Exception {

driver.quit();

}

@Test

public void add() {

driver.findElement(By.id("com.android.calculator2:id/digit_1")).click();

driver.findElement(By.id("com.android.calculator2:id/op_add")).click();

driver.findElement(By.id("com.android.calculator2:id/digit_2")).click();

driver.findElement(By.id("com.android.calculator2:id/eq")).click();

}

}

从零开始做一个Android自动化的更多相关文章

  1. Vue.js 入门:从零开始做一个极简 To-Do 应用

    Vue.js 入门:从零开始做一个极简 To-Do 应用 写作时间:2019-12-10版本信息:Vue.js 2.6.10官网文档:https://cn.vuejs.org/ 前言  学习 Vue ...

  2. [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难

    最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...

  3. 《从零开始做一个MEAN全栈项目》(1)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发? ...

  4. 《从零开始做一个MEAN全栈项目》(2)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技 ...

  5. 《从零开始做一个MEAN全栈项目》(4)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心工具,express和 ...

  6. 《从零开始做一个MEAN全栈项目》(3)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一篇文章给大家讲了一下本项目的开发计划,这一章将会开始着手搭建一个MEAN项目.千里之行,始于足下, ...

  7. 从零开始做一个Jmeter性能测试

    安装Jmeter 1.下载地址http://jmeter.apache.org/download_jmeter.cgi 2.解压下载文件,然后将bin目录添加到系统环境变量PATH里. 3.确保已安装 ...

  8. 招聘:有兴趣做一个与Android对等的操作系统么?

    招聘:有兴趣做一个与Android对等的操作系统么? 前不久我发了一篇<八一八招聘的那些事儿>讲了我自己作为求职者对招聘的一些看法.那个时候我还在求职,对求职的结果还是挺满意的,五家公司面 ...

  9. 想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研

    想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研 http://blog.csdn.net/testing_is_believing/article/details/22 ...

随机推荐

  1. 如何创建yml文件

    New-File 输入application.yml,但是这不是真正的yml文件 ctrl+shift+alt+s

  2. AGC020C Median Sum

    高端操作qaq 又双叒叕读错题了= = 然后重新读题发现不会做了 于是瞅了一波题解 我靠要不要这么暴力呜呜呜 直接bitset O(n^3/w)QAQ 就是f[i]表示i是否能被搞出来 然后我们先不看 ...

  3. element-ui中使用el-radio单选切换表格

    应用场景:点击单选,切换表格数据 代码: data里的数据:(这里的值是默认选中的   和label值是对应的) change事件操作切换,这里面添加@click事件是不生效的,注意...

  4. Java调用明华RF读写器DLL文件的方法

    首先jdk必须得是32位的,IDE也必须是32位的(我用的idea,所以为了使用32位的,下载了2018年1月版本的). 明华RF读写器演示文件提供了一份名为mwrf32.dll的动态链接库文件 ja ...

  5. css3的三大特性以及移动端说明

    css3的三大特性: 一.层叠性 所谓层叠性是指多种CSS样式的叠加. 是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉 比如先 ...

  6. SGU 194 Reactor Cooling (无源上下界网络流)

    The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuclear ...

  7. CentOS安装系统时硬盘分区建议

      一.常见挂载点的情况说明一般来说,在linux系统中都有最少两个挂载点,分别是/ (根目录)及 swap(交换分区),其中,/ 是必须的: 详细内容见下文: 安装系统时选择creat custom ...

  8. upc组队赛14 As rich as Crassus【扩展中国剩余定理】

    As rich as Crassus 题目链接 题目描述 Crassus, the richest man in the world, invested some of his money with ...

  9. ATT&CK实战系列 红队实战(一)————环境搭建

    首先感谢红日安全团队分享的靶机实战环境.红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习.视频教程.博客三位一体学习. 靶机下载地址:http://vulnstack.qiyuanxue ...

  10. 数组中重复的数字(js实现)

    题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的 ...