移动端自动化简单说就是,写好操作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. python+selenium自动化框架搭建

    环境及使用软件信息 python 3 selenium 3.13.0 xlrd 1.1.0 chromedriver HTMLTestRunner 说明: selenium/xlrd只需要再pytho ...

  2. UVA 12012 Detection of Extraterrestrial(KMP求循环节)

    题目描述 E.T. Inc. employs Maryanna as alien signal researcher. To identify possible alien signals and b ...

  3. 15 个最佳 jQuery 翻书效果插件

    本文为你带来15个非常实用的.实现类似翻书效果的jQuery插件,你可以很容易地整合到你的web应用中,提升用户体验. 1.  BookBlock BookBlock可以将任何内容(如图像.文本)创建 ...

  4. Linux 虚拟机通过NAT模式访问外网

    1.配置本地VM8地址   2.配置虚拟机NAT网卡:设置VM8网卡地址和Linux主机相同网段地址,网关随便设置   3.编译网卡文件 vim /etc/sysconfig/network-scri ...

  5. 三线SWD模式Jlink

    三线SWD模式Jlink   在公司实习,部门经理让我做一个USB-CAN的适配器. 在网上找资料,找到一个开源的USB-CAN的适配器的资料. 采用的是CP2102芯片实现USB转串口.STM32作 ...

  6. Windows-菜单太长点不到

    显示设置里显示器方向调整成纵向

  7. 使用命令将ipa包上传到蒲公英

    参考:官文文档 请根据开发者自己的账号,将其中的 uKey 和 _api_key 的值替换为相应的值.   curl -F "file=@/Users/chenpeisong/Desktop ...

  8. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Facebook 第三方登录 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask ...

  9. MySQL 添加用户、删除用户与授权

    mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...

  10. 用webdriver模仿浏览器 爬取豆瓣python书单

    用webdriver模仿浏览器 爬取豆瓣python书单 其中运用到os 模块 作用是生成文件夹 存储爬取的信息 etree 用于xpath解析内容 详细代码如下 可用我的上一篇博客存取到excel当 ...