当前位置: 首页 > news >正文

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 四、写在最后 一、前言 随着移动互联网的发展&#xff0c;AP…...

【洛谷 P1303】A*B Problem 题解(高精度+字符串)

A*B Problem 题目描述 给出两个非负整数&#xff0c;求它们的乘积。 输入格式 输入共两行&#xff0c;每行一个非负整数。 输出格式 输出一个非负整数表示乘积。 样例 #1 样例输入 #1 1 2样例输出 #1 2提示 每个非负整数不超过 1 0 2000 10^{2000} 102000。 思路 …...

计算机网络(43)

目录 计算机网络学习 1、OSI 七层网络模型&#xff0c;你了解吗&#xff1f;具体功能有哪些&#xff1f; 2、TCP/IP四层模型&#xff1f; 3、说一下TCP的三次握手&#xff1f; 4、为什么要三次握手&#xff1f;两次行不行&#xff1f;四次呢&#xff1f; 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):构建统一而强大的对象结构

在软件开发中&#xff0c;面对复杂的对象结构和层次关系&#xff0c;我们常常需要一种能够统一处理单个对象和对象组合的设计模式。组合模式&#xff08;Composite Pattern&#xff09;提供了一种优雅而灵活的解决方案&#xff0c;它允许我们以统一的方式处理单个对象和对象组合…...

为什么路由器属于网络层

1. 路由器所属阶段 路由器属于 OSI 模型的网络层&#xff0c;因为它们负责根据网络层信息&#xff08;第 3 层&#xff09;做出路由决策。网络层是 OSI 模型中的第三层&#xff0c;主要负责将数据包从网络中的源路由到目的地。 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 引用只能指向对象&#xff0c;且不能同时指向多个对象…...

一个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应用的目录结构

详情可以参考&#xff1a; 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应用根目录下包含如下内容&#xff1a; *.html, *.jsp等&#xf…...

【Mac环境搭建】JDK安装、多JDK安装与切换

文章目录 JDK下载与安装下载安装 配置环境变量安装多个JDK共存 JDK下载与安装 下载 Oracle官网提供了非常多个版本的JDK供下载&#xff0c;可以点击如下链接重定向到JDK下载页面 ORACLE官网JDK下载 安装 下面的官方文档可以点开收藏到浏览器的收藏夹&#xff0c;这样后续在开…...

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. 运算符重载一般运算符重载赋值运算符…...

图片批量归类:告别混乱,实现高效文件管理

在日常生活中&#xff0c;我们经常需要处理大量的图片文件。这些图片可能来自于不同的设备、不同的目录&#xff0c;甚至不同的存储介质。随着时间的推移&#xff0c;这些图片文件会越来越多&#xff0c;管理起来也会越来越困难。如何高效地整理这些图片文件&#xff0c;告别混…...

187. 重复的DNA序列 --力扣 --JAVA

题目 DNA序列 由一系列核苷酸组成&#xff0c;缩写为 A, C, G 和 T.。 例如&#xff0c;"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时&#xff0c;识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s &#xff0c;返回所有在 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&#xff0c;周日晚上 QNetworkAccessManager是Qt Network模块中的一个类&#xff0c;用于发送网络请求和接收网络响应。它提供了一种方便的方式来进行网络通信&#xff0c;支持常见的网络协议&#xff0c;如HTTP、HTTPS、FTP等。 QNetworkAccessManager和QNetwork…...

zookeeper节点类型

节点类型 持久节点&#xff08;Persistent Nodes&#xff09; 这些是Zookeeper中最常见的一种节点类型&#xff0c;当创建一个持久类型节点时&#xff0c;该值会一直存在zookeeper中&#xff0c;直到被显式删除或被新值覆盖。 临时节点&#xff08;Ephemeral Nodes&#xff…...

【C++】一篇文章搞懂auto关键字及其相关用法!

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

微信小程序overflow-x超出部分样式不渲染

把display:flex改成display:inline-flex&#xff0c; 将对象作为内联块级弹性伸缩盒显示&#xff0c; 类似与是子元素将父元素撑开&#xff0c;样式就显示出来了...

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&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。 --------------------------- 确定 --------------------------- 安装MySQL时出现 “This appl…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...