Android自动化测试-UiAutomator环境搭建

news2024/12/22 16:11:38

目录

一、环境准备

二、新建Android Studio工程

三、测试实例

总结:


一、环境准备

  1. 安装android sdk,并配置环境变量

  2. 安装android studio,国内访问官网受限,如果下载不到,可以到我的百度云盘下载:

    https://pan.baidu.com/s/1bpq5wK3

   此云盘中有uiautomator2所依赖的jar包,可以同时下载

   

二、新建Android Studio工程

  

  新建一个project,输入application name,下一步,

  

  默认选择,下一步,

  

  选择 empty activity:

  

  最后finish之后,切换到project视图;

  

  右击工程,新建一个libs,并把网盘中下载的uiautomator依赖的jar包,copy进来,并添加依赖,

  

  Add As Library之后,会弹出一个小框,选择app,点击OK

  

  这样我们的工程就建好了,左上角,把我们的project模式切换成android模式,

  

  现在android视图模式下,界面就比较简洁直观了,如下图所示:标注android test的地方,就是我们要写测试用例的包,

  

  新家一个java class,输入class name,现在我们就可以开开心心的写测试代码了

三、测试实例

  下面我们写一个例子,启动模拟器,模拟器home上有个chrome浏览器,操作步骤:点击chrome-输入www.baidu.com-enter;

  点击android studio上的 AVD manager,就可以启动模拟器,模拟器界面如下:

  

  

  测试用例:

    1. 点击chrome

    2. 输入www.baidu.com

    3. Enter

  代码如下:

    

        

  写好测试用例之后,我们就可以运行了,在运行之前,我们先看下运行配置:

  

  在配置文件中,一定要有如下一行代码,如果没有,可以自己加上:

  testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

   现在就可以运行了,打开你的模拟器,看下界面有什么效果:

  

  完整代码如下:

 1 import android.app.Instrumentation;
 2 import android.support.test.InstrumentationRegistry;
 3 import android.support.test.runner.AndroidJUnit4;
 4 import android.support.test.uiautomator.UiDevice;
 5 import android.support.test.uiautomator.UiObject;
 6 import android.support.test.uiautomator.UiObjectNotFoundException;
 7 import android.support.test.uiautomator.UiSelector;
 8 import android.view.KeyEvent;
 9 
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.junit.runner.RunWith;
13 
14 /**
15  * Created by tianxing on 2017/8/15.
16  */
17 
18 @RunWith(AndroidJUnit4.class)
19 public class helloworld {
20 
21     UiDevice uiDevice;
22     Instrumentation instrumentation;
23 
24     @Before
25     public void setUp(){
26         instrumentation = InstrumentationRegistry.getInstrumentation();
27         uiDevice = UiDevice.getInstance(instrumentation);
28     }
29 
30     @Test
31     public void launchChrome(){
32           UiObject chrome = uiDevice.findObject(new UiSelector().text("Chrome"));
33           UiObject searchContent = uiDevice.findObject(new UiSelector().text("Search or type URL"));
34 
35         try {
36             chrome.click();
37             sleep(2000);
38             searchContent.setText("www.baidu.com");
39             uiDevice.pressKeyCode(KeyEvent.KEYCODE_ENTER);
40         } catch (UiObjectNotFoundException e) {
41             e.printStackTrace();
42         }
43 
44     }
45 
46     public void sleep(int mint){
47         try{
48             Thread.sleep(mint);
49         }catch (InterruptedException e){
50             e.printStackTrace();
51         }
52     }
53 
54 }

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

                                            

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式之行为型-责任链模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基础概念 责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行发送。请求会被链上每个处理者处理,直到请求被处理完毕。该模式主要解决的是请求的发送者和多个请求处理者之间建立一条链…

交易策略对交易者多重要,4点讲明白

初入交易市场的交易者,一定听过交易策略你对交易者的重要性,但是您可能不明白为什么,今天Forexclub通过4点给初入交易市场的交易者,讲解交易策略的重要。希望能帮助到各位刚进入交易市场的初学者。 首先,当交易者确定好…

数字农业农村数字化整体解决方案

导读:原文《数字农业农村解决方案 》共69页ppt(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考 完整版领取方式 完整版领取方式: 如需获取完整的电…

LangChain快速开始

什么是LangChain langchain 是一个框架, 用于连接大语言模型的框架, 它提供了一整套工具、组件和接口,简化上层应用与大语言模型,聊天模型的的过程,可轻松管理与模型的交互,以及跟多组件链接起来。 在 La…

创建空对象{}的数组,空对象地址是否指向同一处

今天,突发奇想,突然想到这个奇葩的问题,实践才是检验真理的唯一标准,下面一一举例验证这个问题的可能性😁😁😁。 首先,创建空对象的数组的方式有多种 👀👀方…

ChatGPT 最佳实践指南之:将复杂任务拆分为较简单的子任务

Split complex tasks into simpler subtasks 将复杂任务分解为较简单的子任务 Just as it is good practice in software engineering to decompose a complex system into a set of modular components, the same is true of tasks submitted to GPTs. Complex tasks tend to …

Maven学习及分模块创建

一、引言 1.1 项目管理问题 写项目时,我们需要引用各种 jar 包,尤其是比较大的工程,引用的 jar 包往往有几十个乃至上百个, 每用 到一种 jar 包,都需要手动引入工程目录,而且经常遇到各种让人抓狂的 jar 包…

【Hello mysql】 mysql的复合查询 (重点)

Mysql专栏:Mysql 本篇博客简介:介绍mysql的复合查询 mysql的复合查询 基本查询回顾查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J按照部门号升序而雇员的工资降序排序使用年薪进行降序排序显示工资最高的员工…

kgm --> mp3

kgm转换mp3 kgm应该是kugou那个音乐播放器的音乐文件吧,把mp3转成自己定义的文件 转换工具,免费一天3首 转换完成头部,添加了几秒的广告!!!唉 转换修改mp3头部 作为有开发经验的我,哪里有法子…

音视频编码实战-------pcm+yuv数据转成MP4

文章目录 1.编码流程图2.相关模块及函数2.1 编码器相关API2.2 复用器相关API2.3 重采样相关API注意点 简单的编码流程相关代码 1.编码流程图 2.相关模块及函数 2.1 编码器相关API avcodec_find_encoder: 根据编码器ID查找编码器 avcodec_alloc_context3:创建编码器上下文 avc…

使用wxPtyon和pillow开发拼图小游戏(一)

刚学习python,心血来潮,使用wxPython和pillow开了一个简单的拼图小游戏,大家分享一下 wxPython是Python语言的一套优秀的GUI图形库,在此项目里主要用来开发GUI客户页面;Pillow是一个非常好用的图像处理库,…

Python编译器Pycharm使用技巧

欢迎来到mo的python学习之路 目录 pycharm一些小技巧 1.更换pycharm主题颜色 1.1默认颜色 1.2设置其他颜色 2.汉化 2.1具体操作 3. 创建python包和文件 ,运行python文件 3.1创建python包 3.2创建python文件 3.3运行python文件 3.快捷方式 pycharm一些小技巧 …

2023年11月软考高级网络规划设计师报名时间-报名入口-报名流程

软考高级网络规划设计师报名时间: 广东2023下半年软考高级网络规划设计师报名时间:8月16日9:00-8月24日17:00 江西2023下半年软考高级网络规划设计师报名时间:8月15日9点-9月8日17点 安徽2023下半年软考高级网络规划设计师报名时间&#x…

NTIRE 2023 Challenge on Efficient Super-Resolution——RepRFN:当RFDN遇到重参数化

RepRFN:当RFDN遇到重参数化 0. 简介 NTIRE 的全称为New Trends in Image Restoration and Enhancement Challenges,即“图像复原和增强挑战中的新趋势”,是CVPR(IEEE Conference on Computer Vision and Pattern Recognition)举办的极具影响…

终端关于GPU的命令行

1.了解GPU的资源利用情况: nvidia-smi 2.实时刷新(1秒): nvidia-smi -l 1 3.配合watch命令可实时显示GPU运行状态: watch -n 1 nvidia-smi 其中 1 为刷新的时间间隔。 4.将监控结果写入文件,并且指定…

又是一条慢 SQL 改写,拿捏!

作者分享了一条慢 SQL 分析和优化的过程,总结出切实有效的优化手段。 作者:马文斌 MySQL 爱好者。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 背景 开发同学丢…

苹果M1/M2 Mac正式支持运行Win11

微软与虚拟化软件 Parallels 达成合作,允许在 Apple M1 和 M2 Mac 上的虚拟环境中运行 Windows 11。“Parallels Desktop 版本 18 是一个授权解决方案,用于在其平台上的 Apple M1 和 M2 计算机上的虚拟环境中运行 Arm 版本的 Windows 11 Pro 和 Windows …

算法学习 day23

669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代…

【高级程序设计语言C++】初识模板

1. 函数模板1.1函数模板的实例化1.2显示实例化1.3模板参数的匹配原则 2.类模板2.1类模板的定义格式2.2类模板的实例化 1. 函数模板 概念: 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函…

字符串模式匹配算法(暴力破解、KMP、BM、Sunday)

目录 暴力破解 KMP 算法 构造 next 数组 KMP代码 BM 算法 Sunday 算法 参考资料 又通过leetcode复习了之前的知识:找出字符串中第一个匹配项的下标 暴力破解 你的面前有两段序列 S 和 T,你需要判断 T 是否可以匹配成为 S 的子串。 你可能会凭肉眼立即得出结…