java APP自动化测试AppIum
一、前言
二、Appium环境搭建
2.1 JDK安装
2.2 Android SDK安装配置
2.3 模拟器安装及配置
2.4 Appium Desktop安装及使用
2.5 Appium配置连接模拟器
三、实战基本脚本编写
3.1 创建Maven项目并配置
3.2 简单Demo
四、写在最后
一、前言
随着移动互联网的发展,APP上面的测试逐渐的流行起来。而作为APP自动化测试中最常用的框架就是Appium。Appium是一个开源、跨平台的测试框架。可以用来测试原生及混合的移动端应用。
下面就从Appium环境搭建和基础脚本编写来展开。其中Appium环境搭建中,需要安装JDK、Android SDK、模拟器(或者用真机),从而后续就是使用代码连接Appium来操作模拟器。
二、Appium环境搭建
2.1 JDK安装
关于JDK的安装及环境变量配置就不在这里多做解释了。
2.2 Android SDK安装配置
下载压缩包文件
链接:这是一个链接
提取码:99a6
解压后点击打开SDK Manager.exe文件

勾选Tools下的前三个选项,并安装,安装完成后目录下回多出几个文件夹。



环境变量配置
ANDROID_HOME:SDK安装目录
Path:%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\29.0.3;%ANDROID_HOME%\platform-tools;
验证配置:输入adb和aapt有使用帮助信息说明配置成功了

2.3 模拟器安装及配置
安装模拟器,这里选择的是夜神模拟器,安装的话,直接网上下载后安装即可,记住安装目录即可
打开模拟器并安装APK文件

查看服务是否启动
adb devices
nox_adb.exe connect 127.0.0.1:62001
踩坑问题——adb.exe与nox_adb.exe版本问题
使用adb version、nox_adb version命令查看bin目录下adb.exe、
nox_adb.exe的版本,然后切换到其他目录下,使用adb version查看版本。
如果不一致,就要将Android SDK目录下的adb.exe复制替换到模拟器bin目录下,
并且复制修改名称为nox_adb.exe替换模拟器bin目录下的nox_adb.exe

2.4 Appium Desktop安装及使用
- 下载安装包文件
链接:这是一个链接
提取码:99a6 - 点击安装
appium-desktop-Setup-1.3.1.exe文件,直接点击安装即可。


2.5 Appium配置连接模拟器
- 使用命令查看Android版本
adb shell getprop ro.build.version.release

使用命令APK文件信息
aapt dump badging D:\BaiduMap.apk


Appium 创建连接


{
"platformName": "Android",
"platformVersion": "5.1.1",
"deviceName": "127.0.0.1:62001",
"appPackage": "com.baidu.BaiduMap",
"appActivity": "com.baidu.baidumaps.WelcomeScreen"
}

开启链接后的效果

在模拟器中操作app

三、实战基本脚本编写
3.1 创建Maven项目并配置
<dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version>7.5.0</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-remote-driver</artifactId><version>3.141.59</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-api</artifactId><version>3.141.59</version></dependency>
/*** @author YFF* @version 1.0.0* @date 2020/06/06**/
public class AppTest {public static void main(String[] args) throws Exception{AppiumDriver driver=null;DesiredCapabilities cap=new DesiredCapabilities();cap.setCapability("platformName","Android");cap.setCapability("platformVersion","5.1.1");cap.setCapability("deviceName","127.0.0.1:62001");cap.setCapability("appPackage","com.baidu.BaiduMap");cap.setCapability("appActivity","com.baidu.baidumaps.WelcomeScreen");cap.setCapability("unicodeKeyboard","true");cap.setCapability("resetKeyboard","true");cap.setCapability("noSign","true");driver=new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),cap);Thread.sleep(5000);/*点击同意按钮*/driver.findElement(By.id("com.baidu.BaiduMap:id/ok_btn")).click();Thread.sleep(5000);/*点击进入地图*/driver.findElement(By.id("com.baidu.BaiduMap:id/btn_enter_map")).click();Thread.sleep(5000);driver.quit();}
}
四、写在最后
(1)将这个过程中常用的命令写在后面,方面后面查阅。
##模拟器连接
nox_adb.exe connect 127.0.0.1:62001##查看设备信息
adb devices##查看Android版本
adb shell getprop ro.build.version.release##查看APK信息
aapt dump badging D:\BaiduMap.apk##查看adb.exe和nox_adb.exe版本
adb version
nox_adb version
相关文章:
java APP自动化测试AppIum
一、前言 二、Appium环境搭建 2.1 JDK安装 2.2 Android SDK安装配置 2.3 模拟器安装及配置 2.4 Appium Desktop安装及使用 2.5 Appium配置连接模拟器 三、实战基本脚本编写 3.1 创建Maven项目并配置 3.2 简单Demo 四、写在最后 一、前言 随着移动互联网的发展,AP…...
【洛谷 P1303】A*B Problem 题解(高精度+字符串)
A*B Problem 题目描述 给出两个非负整数,求它们的乘积。 输入格式 输入共两行,每行一个非负整数。 输出格式 输出一个非负整数表示乘积。 样例 #1 样例输入 #1 1 2样例输出 #1 2提示 每个非负整数不超过 1 0 2000 10^{2000} 102000。 思路 …...
计算机网络(43)
目录 计算机网络学习 1、OSI 七层网络模型,你了解吗?具体功能有哪些? 2、TCP/IP四层模型? 3、说一下TCP的三次握手? 4、为什么要三次握手?两次行不行?四次呢? 5、为什么建立连接是三…...
Ipswitch WS_FTP 12 安裝
Ipswitch WS.FTP.Professional.12.6.rar_免费高速下载|百度网盘-分享无限制 This works but quite difficult to figure out. It didnt allow me to replace the wsftpext.dll at 1st and had to test lots of ways how to replace it. This is how I did: 1. Follow the instr…...
二十三种设计模式全面解析-解密组合模式(Composite Pattern):构建统一而强大的对象结构
在软件开发中,面对复杂的对象结构和层次关系,我们常常需要一种能够统一处理单个对象和对象组合的设计模式。组合模式(Composite Pattern)提供了一种优雅而灵活的解决方案,它允许我们以统一的方式处理单个对象和对象组合…...
为什么路由器属于网络层
1. 路由器所属阶段 路由器属于 OSI 模型的网络层,因为它们负责根据网络层信息(第 3 层)做出路由决策。网络层是 OSI 模型中的第三层,主要负责将数据包从网络中的源路由到目的地。 Here’s a formal and precise explanation of …...
【0基础学Java第七课】-- 类和对象01
7. 类和对象 7.1 面向对象的初步认知7.1.1 什么是面向对象7.1.2 面向对象与面向过程 7.2 类定义和使用7.2.1 简单认识类7.2.2 类的定义格式7.2.3 定义一个狗类7.2.4 定义一个学生类 7.3 类的实例化7.3.1 什么是实列化7.3.2 引用只能指向对象,且不能同时指向多个对象…...
一个JS版寻路的实现
js版的寻路的测试 20231104_161146 path get_v8: function (x_inc, y_inc) {if (x_inc 0) {if (y_inc < 0) {return [[0, -1], [-1, -1], [1, -1], [-1, 0], [1, 0], [-1, 1], [1, 1], [0, 1]];} else if (y_inc > 0) {return [[0, 1], [-1, 1], [1, 1], [-1, 0], [1, 0…...
Java web应用的目录结构
详情可以参考: https://tomcat.apache.org/tomcat-10.1-doc/appdev/deployment.html https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#directory-structure Java web应用根目录下包含如下内容: *.html, *.jsp等…...
【Mac环境搭建】JDK安装、多JDK安装与切换
文章目录 JDK下载与安装下载安装 配置环境变量安装多个JDK共存 JDK下载与安装 下载 Oracle官网提供了非常多个版本的JDK供下载,可以点击如下链接重定向到JDK下载页面 ORACLE官网JDK下载 安装 下面的官方文档可以点开收藏到浏览器的收藏夹,这样后续在开…...
C++: 类和对象(中)
文章目录 1. 类的6个默认成员函数2. 构造函数构造函数概念构造函数特性特性1,2,3,4特性5特性6特性7 3. 析构函数析构函数概念析构函数特性特性1,2,3,4特性5特性6 4. 拷贝构造函数拷贝构造函数概念拷贝构造函数特性特性1,2特性3特性4特性5 5. 运算符重载一般运算符重载赋值运算符…...
图片批量归类:告别混乱,实现高效文件管理
在日常生活中,我们经常需要处理大量的图片文件。这些图片可能来自于不同的设备、不同的目录,甚至不同的存储介质。随着时间的推移,这些图片文件会越来越多,管理起来也会越来越困难。如何高效地整理这些图片文件,告别混…...
187. 重复的DNA序列 --力扣 --JAVA
题目 DNA序列 由一系列核苷酸组成,缩写为 A, C, G 和 T.。 例如,"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时,识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次…...
Mysql高级——Mysql8一主一从,多主多从搭建
修改 /etc/hosts文件 ip地址 master1 ip地址 master2 ip地址 slave1 ip地址 slave2一主一从 create database master1db;create table master1db.master1tab(name char(50));insert into master1db.master1tab VALUES(1111);insert into master1db.master1tab VALUES(2222);m…...
【Qt5】QNetworkAccessManager
2023年11月5,周日晚上 QNetworkAccessManager是Qt Network模块中的一个类,用于发送网络请求和接收网络响应。它提供了一种方便的方式来进行网络通信,支持常见的网络协议,如HTTP、HTTPS、FTP等。 QNetworkAccessManager和QNetwork…...
zookeeper节点类型
节点类型 持久节点(Persistent Nodes) 这些是Zookeeper中最常见的一种节点类型,当创建一个持久类型节点时,该值会一直存在zookeeper中,直到被显式删除或被新值覆盖。 临时节点(Ephemeral Nodesÿ…...
【C++】一篇文章搞懂auto关键字及其相关用法!
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
微信小程序overflow-x超出部分样式不渲染
把display:flex改成display:inline-flex, 将对象作为内联块级弹性伸缩盒显示, 类似与是子元素将父元素撑开,样式就显示出来了...
Oracle常用运维SQL-SQL执行性能及锁表等查询分析
oracle相关系列文章: docker–在Anaconda jupyter 容器中使用oracle数据源时,Oracle客户端安装配置及使用示例 Oracle常用运维SQL–用户管理、数据导入、导出的实用脚本 Oracle TEMPORARY TABLE 临时表的使用及删除报ORA-14452错误的解决办法 Oracle常用运维SQL-SQL执行性能及…...
安装MySQL时出现 由于找不到 MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。
--------------------------- mysqld.exe - 系统错误 --------------------------- 由于找不到 MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。 --------------------------- 确定 --------------------------- 安装MySQL时出现 “This appl…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
