Appium移动端自动测试框架,如何入门?

Appium是一个开源跨平台移动应用自动化测试框架。
既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下:
1、为什么要使用Appium?
2、如何搭建Appium工具环境?(超详细)
3、通过demo演示Appium的使用
4、Appium如何实现移动端UI自动化测试呢?
5、Appium视频类学习资源分享
ps:如果觉得文字图片不如视频来的直接,也可以直接看第五部分,有关“Appium视频类学习资源分享”。
一、为什么移动端要使用Appium?
UI自动化领域,如果说Web端的自动化框架第一选择是Seleum,那么移动端(手机)的自动化框架第一选择就是Appium。
为什么Appium在移动端测试地位这么高呢?来看它的5个优点:
1)跨平台支持:
Appium支持Android和iOS平台的自动化测试,使用相同的API可以编写跨平台的测试脚本。
2)支持多种编程语言:
Appium可以使用多种流行的编程语言编写测试脚本,包括Java、Python、JavaScript等。方便测试人员能够使用他们熟悉的语言编写自动化测试脚本。
3)兼容多种移动应用类型:
无论是原生移动应用(APP)、混合应用(Hybrid App)和移动网页应用(H5),Appium都支持自动化测试。
4)开放性和灵活性:
Appium是一个开源项目,让开发人员能够对其进行扩展和定制。它可以与其他测试框架和工具集成,如JUnit、TestNG和CI/CD工具等。
5)使用标准的WebDriver协议:
Appium使用WebDriver协议来与移动设备进行通信,这使得开发人员可以使用熟悉的API和命令,无需学习新的测试框架。
总的来说,Appium为测试人员提供了一种方便、灵活的方式来进行移动应用的UI自动化测试,帮助他们提高测试效率、减少人工重复工作,并提供可靠的测试结果,所以该工具是进行移动端 UI自动化的第一选择。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

二、如何搭建Appium工具环境?(超详细)
要使用Appium工具,首先需要搭建工具使用环境,那如何搭建Appium的工具环境呢?以Python开发语言为例,需要分成5步走:
第一步:安装 jdk
Appium测试Android程序,需要用到Android开发者工具(adb和定位工具),它依赖了jdk,所以第一步需要先安装jdk(推荐安装1.8)
1 ) 先查下你电脑上是否已安装了JDK(很可能之前已经安装过)。
CMD打开终端,输⼊ java -version,如果能 看到版本信息,可以跳过第二步JDK的安装。

2 ) 如果 java -version 看不到版本信息,下载JDK。
https://www.oracle.com/java/technologies/downloads/


3) 双击 下⾯ exe ⽂件完成安装。
⼀路 “下⼀步” 即可。这个过程会安装 jdk 和 jre 两个内容。耐⼼等待全部安装完成。

4) 安装完成。
重新 cmd 打开新的终端。输⼊ java -version,能看到版本信息,说明安装成功。

5) 如果依然看不到 版本信息,那么要配置 环境变量:将JDK路径:C:\Program Files\Java\jdk1.8.0_151\bin 配置到 Path 环境变量中。

6)安装 Android SDK 工具
测试Android程序需要使用adb获取包名和界面名称,已经使用自带定位工具UIAutomatorViewer,需要需要安装Android SDK工具
6.1) 下载并解压Android SDK

6.2) 配置环境变量

然后再path环境变量添加:
%ANDROID_HOME%/tools;%ANDROID_HOME%/platform-tools;
6.3) 验证adb

6.4)直接安装appium桌面软件工具

6.5)准备模拟器或者真机
需要提前准备Android模拟器(比如雷电模拟器)或者真机(工作中使用)

6.6 ) pycharm中安装 appium-python
直接安装python的appium依赖包:
pip install Appium-Python-Client
pip show Appium-Python-Client
三、通过Demo演示Appium的使用
1、启动 appium 服务器

2、模拟器/真机 连接成功

3、获取应用的包名和界面名:adb shell dumpsys window | findstr mCurrentFocus

4、pycharm中编写代码,如下代码为演示demo代码,在pycharm点击运行,雷电模拟器会自动打开设置应用

四、如何进行Appium实现移动端UI自动化测试呢?
在完成Appium环境搭建和Demo使用后,该如何进行Appium实现移动端UI自动化测试呢?需要分几步走:
1、学习Appium的基础Api的使用
可以参考中文文档,学习appium相关基础的api操作,包含手机基础操作、元素定位、元素操作、获取元素信息、滑动、高级手势、手机操作等。
2、学习PO模式
PO模式(Page Object 模式)是一种软件测试设计模式,用于在自动化测试中管理应用程序的页面。
它的主要目标是提高测试脚本的可读性、可维护性和重用性,同时降低测试脚本和页面实现之间的耦合度。
在PO模式中,每个页面或界面都被抽象为一个独立的对象,称为“页面对象”(Page Object)。页面对象封装了与页面相关的元素、操作和逻辑,并提供一组方法供测试脚本使用。具体而言,页面对象类通常包含以下内容:
1) 元素定位:页面对象包含页面上的元素定位器,如ID、class、XPath等,用于定位页面上的元素。
2)元素操作方法:页面对象提供针对页面元素的操作方法,如点击、输入、获取文本等,封装了与元素交互的操作。
3)页面逻辑和业务方法:页面对象可能包含一些与页面逻辑和业务相关的方法,如验证页面标题、提交表单等。
通过封装页面对象,测试脚本可以更高层次地描述测试步骤和操作,而不必关注页面的具体实现和定位方式。测试脚本可以直接调用页面对象的方法来与页面进行交互,提高了测试脚本的可读性和可维护性,并减少了代码的重复编写。
总之,PO模式是一种有效的设计模式,适用于自动化测试中对页面进行管理和交互的场景。它提供了一种组织和管理测试代码的结构化方法,使得测试脚本更加模块化、可重用和可维护。
3、学习搭建appium移动端自动化测试框架
结合PO模式和Pytest框架,学习和搭建一套完整的UI自动化测试框架,实现UI自动化测试,提升回归测试效率。
4、总结
要实现App的自动化测试,实现Appium工具的入门:
1-首先在windows下安装jdk,Android-sdk环境
2-安装appium桌面工具
3-安装模拟器(比如雷电模拟器),或者使用真机
4-安装python的依赖包(Appium-Python-Client)
5-启动appium服务器,启动模拟器,然后在pycharm中运行demo脚本,即可看到运行效果
接下来可以学习下常用的appium的api、学习如何进行元素定位、然后再学习PO模式的封装,即可完成appium工具的入门和使用。
今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦....
相关文章:
Appium移动端自动测试框架,如何入门?
Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下: 1、为什么要使用Appium? 2、如何搭建Appium工具环境?(超详细) 3、通过demo演示Appium的使用 4、Appium如何…...
外汇天眼:喜大普奔!困扰投资者的交易问题解决了!
在外汇交易中,即使摒弃了“三无”的黑平台,使用的是正规安全的外汇交易平台,但是面对一些突发状况,依然会出现出金堵塞被拖延、入金不到账等交易突发情况,因为许多外汇平台处于国外,沟通困难、网络繁忙、平…...
UUID转16字节数组(Java)
最近在写协议的时候,遇到需要将一个36字符长度的UUID转为长度为16的字节数组; 这样处理的话那我们就需要保证唯一性和可还原; 于是我使用了下面的方式: /*** uuid转16字节数组** param uuidStr* return*/private static byte[] …...
使用vue3 搭建一个H5手机端访问的项目
首先说明,我本地之前运行过vue的项目,所以具有一些基础的运行环境,这里直接按步骤讲我项目框架搭建的过程。 这个不建议使用驼峰,按规范单词中间加横杠就可以。一般会出现选择项,按方向键选择,我这边选择了…...
【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
一,环境,工具准备 1-1 VMVare 16 虚拟机及下载安装(资源) 请参考以下博客安装(特详细):【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客【网络安…...
驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)
头文件(head.h) #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED3_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #define PHY_LE…...
《深入浅出.NET框架设计与实现》阅读笔记(一)
.NET CLI概述 命令说明dotnet add将包或引用添加到.NET项目中dotnet build构建.NET项目,并编译为IL二进制文件dotnet clean清理.NET项目的构建输出dotnet help显示命令行帮助dotnet list罗列项目中的yinyongdotnet publish发布项目,用于部署dotnet sln修…...
Flutter 类似onResume 监听,解决入场动画卡顿(2)
接着完善上一篇内容,上一篇我们是能监听到初次进入路由页面节点,往往还想监听从当前路由跳转到其他路由后,再返回到当前路由页面,上一篇内容就无法满足当前需求了,不过我们完全可以按照上一篇的原理实现这个需求。 直…...
rabbitmq-3.8.15集群、集群镜像模式安装部署
目录 一、环境 1、映射、域名、三墙 2、Erlang和socat安装(三台服务器都实行) 二、部署三台rabbitmq-3.8.15实例 1、rabbitmq官网下载地址 : 2、解压rabbitmq 3、添加系统变量 4、启动web插件、启动rabbitmq 5、在rabbitmq1上添加用…...
import导入顺序杂乱的问题
我们经常会遇到项目中的import语句顺序混乱的问题。这不仅会影响代码的可读性,还可能使我们代码在提交的时候产生不必要的冲突。 解决方案 eslint-plugin-import 开始我调研了一下eslint-plugin-import插件。这款插件的排序逻辑是这样: builtin: 这代…...
Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用
文章目录 (143)NameNode内存配置(144)NN心跳并发配置(145)开启回收站参考文献 (143)NameNode内存配置 每个文件块(的元数据等)在内存中大概 占用150byte&…...
PaddleX场景实战:PP-TS在电压预测场景上的应用
时间序列是按照时间发生的先后顺序进行排列的数据点序列,简称时序。时间序列预测即运用历史的多维数据进行统计分析,推测出事物未来的发展趋势。时间序列预测是最常见的时序问题之一,在很多行业都有其应用,且通常时序预测效果对业…...
pdf误删恢复如何恢复?分享4种恢复方法!
如何将pdf误删恢复?使用电脑的时候,经常会需要使用到pdf文件,但是有时候,因为一些操作上的失误,我们会丢失一些重要的文件。如果你不小心将pdf误删了,该如何进行恢复呢? PDF文件丢失的原因可以…...
简析新能源汽车充电桩设计与应用
叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要:本文针对新能源汽车充电桩建设工作进行探究,采用案例分析法、文献查阅法,指出了新能源汽车充电桩建设存在的问题,阐述了充电桩建设与优化的对策。研究表明:目前…...
Java零基础入门-算术运算符
本文旨在帮助零基础的读者快速了解Java中的算术运算符,包括基本的加减乘除运算符、取余运算符、自增自减运算符等常见的数学运算符。 在学习本文前,需要先掌握基本的Java语法,包括数据类型、变量、赋值语句等。 前言 在编写Java程序时&…...
java实现hbase数据导出
1. HBase-client方式实现 1.1 依赖 <!--HBase依赖坐标--><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.6</version></dependency><dependency><group…...
Unity之ShaderGraph如何实现旋涡效果
前言 今天我们来通过ShaderGraph来实现一个旋涡的效果 如下图所示: 主要节点 Distance:返回输入 A 和输入 B 的值之间的欧几里德距离。除了其他方面的用途,这对于计算空间中两点之间的距离很有用,通常用于计算有符号距离函数 (…...
【分布式】: 幂等性和实现方式
【分布式】: 幂等性和实现方式 幂等(idempotent、idempotence)是一个数学与计算机学概念, 常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是…...
idea 设置serlvet 类模板(快捷生成servlet类)
我的版本是idea2020.3.4,博客中有相应安装教程,其他版本设置类似: 1.选择文件-->设置 2.选择编辑器-->文件和代码模板-->其他 3.选择Web-->Servlet Annotated Class.java-->复制相应模板,下面顺便设置了注释模板 …...
SpringBoot自动配置原理解析 | 京东物流技术团队
1: 什么是SpringBoot自动配置 首先介绍一下什么是SpringBoot,SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架,其最主要的特点是:能使程序开发者快速搭建一套开发环境。SpringBoot能将主流的开发框架(例如Sp…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
