如何实现APP自动化测试?
APP测试,尤其是APP的自动化测试,在软件测试工程师的面试中越来越会被问到了。为了更好的回答这个问题,我今天就给大家分享一下,如何进行APP的自动化测试。
一、为了实现Java+Appium+Junit技术用于APP自动化测试,所以需要完成以下内容:
1、完成环境配置:
2、安装JDK,配置Java开发环境。JDK版本为1.8.
3、下载和配置完成ADT环境。Android Development Tools环境。
4、调试完成adb命令。
5、安装和使用Android模拟器工具。
6、下载和配置好Appium,需要安装node.js环境(一般是为了安装appium)。
7、将Java开发Appium的相关文件(Jar文件准备好)。
8、下载和配置Junit环境。
二、开始编写和准备测试脚本。
1、创建Java工程和项目。
2、创建一个Junit的Java文件,将Junit4的相关包添加到build path中。
3.将appium相关的三个Jar包,放在项目的lib文件中,并添加到build path中。

4.开始编写测试脚本。在Junit的Java文件中,设置Desired Capabilities。
DesiredCapabilities dc = new DesiredCapabilities();
//添加属性
dc.setCapability("deviceName", "127.0.0.1:56001");
dc.setCapability("automationName", "Appium");
dc.setCapability("platformName", "Android");
dc.setCapability("platformVersion", "4.4.4");
dc.setCapability("appPackage", "com.ibox.calculators");
dc.setCapability("appActivity", ".CalculatorActivity");

使用adb命令,获取设备名称。打开模拟器,使用adb命令:adb devices.

使用adb命令,获取Android系统版本号。

使用adb命令,获取APP的包名称。

使用相关的adb命令,获取到被测APP的activity名称。

定义驱动对象
//生成对象的地址和路径
AppiumDriver driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),dc);
使用UIautomatorViewer。定位界面元素,并对元素进行操作。

开始编写代码。
//定位APP的界面元素/** 实现计算器计算98+45=* *///元素等待Thread.sleep(10000);driver.findElement(By.id("com.ibox.calculators:id/user_privacy_ok")).click();Thread.sleep(3000);driver.findElement(By.id("com.ibox.calculators:id/digit9")).click();Thread.sleep(2000);driver.findElement(By.id("com.ibox.calculators:id/digit8")).click();Thread.sleep(2000);driver.findElement(By.id("com.ibox.calculators:id/plus")).click();Thread.sleep(2000);driver.findElement(By.id("com.ibox.calculators:id/digit4")).click();Thread.sleep(2000);driver.findElement(By.id("com.ibox.calculators:id/digit5")).click();Thread.sleep(2000);driver.findElement(By.id("com.ibox.calculators:id/add_item")).click();
启动APPium,并开启服务。(将host设置为127.0.0.1,Port保持默认(4723))

运行脚本。这个地方没法截图了。(大家脑补一下吧)
相关文章:
如何实现APP自动化测试?
APP测试,尤其是APP的自动化测试,在软件测试工程师的面试中越来越会被问到了。为了更好的回答这个问题,我今天就给大家分享一下,如何进行APP的自动化测试。 一、为了实现JavaAppiumJunit技术用于APP自动化测试,所以需要…...
INNODB和MyISAM区别
1 存储引擎是MyISAM 如下: CREATE table test_myisam (cli int ) ENGINEMyISAM 存储目录里会有三个文件 test_myisam.frm为“表定义”,是描述数据表结构的文件 test_myisam.MYI文件是表的索引 test_myisam.MYD文件是表的数据 2 存储引擎是INNODB…...
普中自动下载软件1.86下载程序失败案例
今天在用开发板做一个功能,下载的时候报错了,说芯片超时 确定驱动安装好了的 波特率也试了一圈 线也换过了 最后发现是芯片类型选错了,这个开发板是用的stc89c52,所以我选了图里这个,但是翻了开发板配套的资料,发现…...
JavaScript HTML DOM
JavaScript HTML DOM(文档对象模型)是一种用于访问和操作HTML文档元素的编程接口。它将HTML文档表示为一个树形结构,使开发人员可以使用JavaScript来操作和修改HTML元素、属性、样式和事件。 通过使用HTML DOM,你可以使用JavaScr…...
solr快速上手:配置IK中文分词器(七)
0. 引言 solr作为搜索引擎,常用在我们对于搜索速度有较高要求且大数据量的业务场景,我们之前已经配置过英文分词器,但是针对中文分词不够灵活和实用,要实现真正意义上的中文分词,还需要单独安装中文分词器 solr快速上…...
【软件测试】接口测试工具APIpost
说实话,了解APIpost是因为,我的所有接口相关的文章下,都有该APIpost水军的评论,无非就是APIpost是中文版的postman,有多么多么好用,虽然咱也还不是什么啥网红,但是不知会一声就乱在评论区打广告…...
第六章 假言:那么、就、则;才。
第六章 假言:那么、就、则;才。 第一节 假言-公式化转换-等价矛盾 真题(2012-38)-假言-A→B的公式化转换-A→B的等价命题:①逆否命题:非B→非A。 38.经理说:“有了自信不一定赢。”董事长回…...
[干货] 如何解决慢SQL?详细分析和优化实践!
慢SQL优化实践 本篇博客将分享如何通过慢SQL分析工具和常用优化手段,来解决慢SQL的问题。首先让我们看一下慢SQL的定义。 什么是慢SQL 简单来说,慢SQL指的是执行时间较长的SQL语句。在数据库中,一个查询的运行时间往往会受到多种因素的影响…...
数据库实验三 数据查询二
任务描述 本关任务:查询来自借阅、图书、读者数据表的数据 为了完成本关任务,你需要掌握: 如何多表查询 相关知识 查询多个数据表 在实际应用中,查询经常会涉及到几个数据表。 基于多个相关联的数据表进行的查询称为连接查询…...
论文笔记与实战:对比学习方法MOCO
目录 1. 什么是MOCO2. MOCO是干吗用的3. MOCO的工作原理3.1 一些概念1. 无监督与有监督的区别2. 什么是对比学习3. 动量是什么 3.2 MOCO工作原理1. 字典查找2. 如何构建一个好的字典3. 工作流程 3.3 (伪)代码分析 4. 其他一些问题5. MOCO v2和MOCO v35.1…...
大数据Doris(三十八):Spark Load 导入Hive数据
文章目录 Spark Load 导入Hive数据 一、Spark Load导入Hive非分区表数据 1、在node3hive客户端,准备向Hive表加载的数据 2、启动Hive,在Hive客户端创建Hive表并加载数据 3、在Doris中创建Hive外部表 4、创建Doris表 5、创建Spark Load导入任务 6…...
【Prometheus】mysqld_exporter采集+Grafana出图+AlertManager预警
前提环境:已经安装和配置好prometheus server 所有组件对应的版本: prometheus-2.44.0 mysqld_exporter-0.14.0 grafana-enterprise-9.1.2-1.x86_64.rpm alertmanager-0.25.0 prometheus-webhook-dingtalk-2.1.0 简介 mysql_exporter是用来收集MysQL或…...
softmax 函数
https://blog.csdn.net/m0_37769093/article/details/107732606 softmax 函数如下所示: y i exp ( x i ) ∑ j 1 n exp ( x j ) y_{i} \frac{\exp(x_{i})}{\sum_{j1}^{n}{\exp(x_j)}} yi∑j1nexp(xj)exp(xi) softmax求导如下: i j…...
【SpringMVC】拦截器和过滤器之间的区别
过滤器 拦截器 调用机制 基于函数的回调 基于反射机制(动态代理) 依赖关系 依赖Servlet容器 不依赖Servlet容器 作用范围 对几乎所有的请求起作用 只对action请求起作用 访问范围 不能访问action上下文、栈 可以访问action上下文、栈 action生命周期 中的调用次数…...
springboot第25集:实体类定义规则
PO:持久化对象,一个PO对象对应一张表里面的一条记录。全部对应 VO:View视图对象,用来在页面中展示数据的,页面需要哪些字段属性就添加哪些,查询出来之后赋值操作比PO对象要简单。所以提高性能。 DTO&#x…...
【python】—— python的基本介绍并附安装教程
前言: 今天,我将给大家讲解关于python的基本知识,让大家对其有个基本的认识并且附上相应的安装教程以供大家参考。接下来,我们正式进入今天的文章!!! 目录 前言 (一)P…...
浏览器跨域请求
跨域是浏览器的一种同源策略,所以该概念只存在于通过浏览器访问服务里。 如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现 请求的url地址,必须与浏览器上的…...
什么,你还在用 momentJs 处理相对时间
我想,下面这段代码,你是不是在开发中常常这样使用来计算距离现在过去了多长时间: import moment from moment // 61k (gzipped:19.k) function Relative(props) {const timeString moment(props.date).fromNow()return <>{timeString…...
三维模型 工程图
飞机 Crankshaft飞机发动机手动冲压机包装成型机械-充填机械设备10数控等离子切割机床铜线缠绕机机床-磨床08机床-磨床04(附工程图)机床-车床数字纤维缠绕机机械臂液压钳机床-车床06挤出机机械手-09机械手模型库六柴油发动机中央空调机柜空调机机床-钻床三维设计电脑服务器机箱…...
我用ChatGPT写2023高考语文作文(二):全国乙卷
2023年 全国乙卷 适用地区:河南、江西、甘肃、青海、内蒙古、宁夏、新疆、陕西 吹灭别人的灯,并不会让自己更加光明;阻挡别人的路,也不会让自己行得更远。 “一花独放不是春,百花齐放春满园。”如果世界上只有一种花朵…...
AI开发不再卡顿:RTX4090D 24G镜像解决环境冲突全攻略
AI开发不再卡顿:RTX4090D 24G镜像解决环境冲突全攻略 1. 为什么选择RTX4090D 24G深度学习镜像? 深度学习开发者最头疼的问题莫过于环境配置。不同框架版本、CUDA版本、依赖库之间的冲突常常让人望而却步。传统环境搭建方式需要: 手动安装C…...
如何快速掌握React Email Editor:深入理解拖拽邮件编辑器的实现原理
如何快速掌握React Email Editor:深入理解拖拽邮件编辑器的实现原理 【免费下载链接】react-email-editor Drag-n-Drop Email Editor Component for React.js 项目地址: https://gitcode.com/gh_mirrors/re/react-email-editor React Email Editor是一个功能…...
UniHacker:跨平台支持的开源工具快速部署方案
UniHacker:跨平台支持的开源工具快速部署方案 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker UniHacker作为一款专业的开源工具,凭借…...
PdgCntEditor三步搞定PDF书签目录自动生成
1. 为什么你需要PDF书签目录? 每次打开几百页的PDF文档,像无头苍蝇一样滑动滚动条找内容?这种体验我太懂了。上周处理一份300多页的技术手册,光是翻目录就花了半小时,直到我发现PdgCntEditor这个神器。它能把杂乱无章…...
Halcon HImage转Bitmap性能大比拼:实测unsafe方案比安全方案快30倍的背后原因
Halcon HImage转Bitmap性能优化实战:从30倍差距到工业级解决方案 在工业视觉检测和实时图像处理领域,毫秒级的性能差异可能意味着生产线能否稳定运行。最近在为一个汽车零部件检测系统做性能优化时,我意外发现Halcon的HImage转Bitmap操作竟成…...
告别云端推理:手把手教你用Vivado HLS在AX7350开发板上部署YOLOv3(附完整工程)
从零部署YOLOv3到AX7350开发板:FPGA加速实战全流程解析 在边缘计算领域,FPGA因其低延迟、高能效和可重构特性,成为深度学习模型部署的热门选择。本文将带您完成YOLOv3目标检测模型在AX7350开发板上的完整部署流程,从环境准备到最终…...
新手福音:利用快马平台生成你的第一个数学公式编辑器入门项目
最近在自学前端开发,一直想尝试做个数学公式编辑器来练手。作为一个完全的新手,从零开始写这种项目确实有点无从下手。不过我发现用InsCode(快马)平台可以很轻松地生成基础代码框架,再根据自己的需求调整完善,特别适合像我这样的初…...
3步玩转Balena Etcher:开源镜像烧录工具完全指南
3步玩转Balena Etcher:开源镜像烧录工具完全指南 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher是一款开源跨平台镜像烧录工具&#x…...
从AlexNet到MobileNet:深度可分离卷积如何用1/4参数量实现高效推理?
从AlexNet到MobileNet:深度可分离卷积如何用1/4参数量实现高效推理? 在移动互联网时代,AI模型部署正经历从云端到边缘的范式转移。当我们谈论"高效推理"时,实际上是在探讨一个核心矛盾:如何在有限的硬件资源…...
ente/auth缓存机制详解:提高系统响应速度
ente/auth缓存机制详解:提高系统响应速度 【免费下载链接】ente 完全开源,端到端加密的Google Photos和Apple Photos的替代品 项目地址: https://gitcode.com/GitHub_Trending/en/ente ente/auth作为专注于移动设备的两步验证(2FA&…...
