Appium如何实现移动端UI自动化测试呢?

Appium是一个开源跨平台移动应用自动化测试框架。

既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下:

  1. 为什么要使用Appium?
  2. 如何搭建Appium工具环境?(超详细)
  3. 通过demo演示Appium的使用
  4. Appium如何实现移动端UI自动化测试呢?

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自动化的第一选择。

同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看就行,希望对你有所帮助!【公众号:互联网杂货铺】免费领取软件测试资料!

2024年Python自动化测试全套保姆级教程,70个项目实战,3天练完,永久白嫖...

二、如何搭建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操作,包含手机基础操作、元素定位、元素操作、获取元素信息、滑动、高级手势、手机操作等。

参考:https://www.kancloud.cn/testerhome/appium_docs_cn/2001595

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工具的入门和使用。

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

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

相关文章

使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源)

1. 整理项目结构,项目目录结构大致划分如下: 2. 安装sass 安装sass开发环境, 注意:使用的文件后缀名要用.scssnpm i sass -D3. 安装Ant Design npm i antd --save 4. 配置基础路由Router(具体可参考ReactRouter使用详解&#x…

Spring高手之路-SpringBean的生命周期

目录 SpringBean的生命周期 整体介绍 详细介绍 1.实例化Bean 2.设置属性值 3.检查Aware 4.调用BeanPostProcessor的前置处理方法 5.调用InitializingBean的afterPropertiesSet方法 6.调用自定义init-method方法 7.调用BeanPostProcessor的后置处理方法 8.注册Destru…

视频压缩不影响画质简单方法,一分钟搞定!

很多朋友在处理视频的时候都会遇到视频过大的问题,想要压缩视频的同时不影响画质,简单的方法有两种。一种是用专业的压缩软件,在压缩的时候设置一个合适的压缩比例,压缩大小的同时保持清晰度,也能提高压缩率&#xff0…

学习自定义【Spring Boot Starter】这一篇就够了

目录 1. starter介绍2. starter原理2-1. 起步依赖2-2. 自动配置基于Java代码的Bean配置自动配置的条件依赖Bean参数获取Bean的发现Bean的加载自动配置总结 3. 自定义starter案例3-1. 开发starter3-2. 使用starter 1. starter介绍 我们知道Spring Boot大大简化了项目初始搭建以…

C语言之进制转换

C语言之进制转换 一、引言二、十进制与二进制、八进制、十六进制三、二进制与八进制、十六进制四、八进制与十六进制 一、引言 在C语言中,经常使用的整数的进制有十进制、二进制、十六进制(在C语言中以0x或0X为前缀)、八进制(在C…

uniapp 创建项目

uniapp 是一款基于 Vue 框架的跨平台应用开发框架。 创建 uniapp 项目 一、打开 HbuilderX 编辑器,点击新建项目。 二、选择 uniapp 项目、自定义项目名称、选择默认模板、选择 Vue 版本、点击创建。 三、这样 uniapp 项目就创建完毕啦! 运行 uniapp …

安防视频监控系统EasyCVR实现H.265视频在3秒内起播的注意事项

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时…

spdlog中的异步日志方案

日志方案 同步日志方案:立即输出日志记录的方案才能继续执行其他任务。 异步日志方案:先抛出一个日志记录的任务到某个地方,不马上执行打印也不影响往下执行其他任务。 二者关键区别是产生日志记录并调用相关的日志任务接口之后&#xff0…

test mock-01-什么是 mock? Mockito/EasyMock/PowerMock/JMockit/Spock mock 框架对比

拓展阅读 test 之 jmockit-01-overview jmockit-01-test 之 jmockit 入门使用案例 mockito-01-overview mockito 简介及入门使用 PowerMock Mock Server ChaosBlade-01-测试混沌工程平台整体介绍 jvm-sandbox 入门简介 单元测试中的 mock 单元测试是一种验证代码单元&…

K8S网络类型

k8s的网络类型 k8s的通信模式 1 pod内部之间容器与容器之间的通信,在同一个pod中容器是共享资源和网络,使用同一个网络命名空间,可以直接通信 2 同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实ip地…

AI 领域代币市场趋势:探索最热门投资领域的前沿动向

作者:lesleyfootprint.network 数据源:Token Sector Dashboard ChatGPT 的热潮点燃了 AI 领域,AI 与区块链技术的融合成为市场关注的焦点。因为区块链的一个显著特征是它能够在链上安全地存储大量数据,这与 AI 模型对数据的密集…

mysql面试题:索引(B+树、聚集索引、二级索引、回表查询、覆盖索引、超大分页查询、索引创建原则)

索引 概念 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构**(B树)**,这些数据结构以某种方式引用(指向)数据&am…

安装虚拟机在虚拟机里面安装WindowsServer2012与步骤

目录 一、VMware介绍 1.1、概念讲解 1.2、VMware虚拟机的安装讲解 1.3、具体操作步骤 二、虚拟机安装WindowsServer2012演示 2.1、在虚拟机里配置具体步骤 (相当于制作启动U盘) 2.2、安装windows server2012步骤演示 三、Windows Server2012激活步骤演示 四、思维导…

golang并发安全-sync.map

sync.map解决的问题 golang 原生map是存在并发读写的问题,在并发读写时候会抛出异常 func main() {mT : make(map[int]int)g1 : []int{1, 2, 3, 4, 5, 6}g2 : []int{4, 5, 6, 7, 8, 9}go func() {for i : range g1 {mT[i] i}}()go func() {for i : range g2 {mT[…

【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)

文章目录 🍔发放优惠券🎆基本操作🎄数据库表🛸思路🌹代码实现 🎆完善后的操作🛸乐观锁🌹代码实现 🍔一人仅一张优惠券🛸思路🌹代码⭐代码分析 &am…

git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

文章目录 前言:新建远程仓库克隆推送【push】拉取【pull】 配置git忽略特殊文件给命令配置别名 标签管理理解标签创建标签操作标签 前言: 大家如果没有看过前几章git的基础操作的话,推荐先看一下,看完再来看这个远程操作&#xf…

2023年总结:反复纠结与成长的一年

前言 这是我第五年写年度总结: 《2022年总结:道阻且长,行则将至》 《2021年总结:前路有光,初心莫忘》 《2020年总结,所有努力只为一份期待》 《2019年总结,平凡的我仍在平凡的生活》 现在…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 数据集合并缓存如何控制对象样式

作者:taco 最近在支持的过程中,遇到了一个新问题!之前研究功能的时候竟然没有想到。通常我们控制单个对象的显隐、颜色、偏移的参数都是根据对象所在的图层以及对象单独的id来算的。那么问题来了,合并后的图层。他怎么控制单个对象…

面试官:SpringBoot项目中,要如何1秒实现异步接口?

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

STM32逆变器方案

输入电压: 额定输入电压:DC110V 输入电压范围:DC77-137.5V 额定输出参数 电压:200V5%(200VAC~240VAC 可调) 频率: 42Hz0.5Hz(35-50 可调) 额定输出容量:1…