使用Appium搭建跨平台的自动化测试环境

2024-06-23 10:32

本文主要是介绍使用Appium搭建跨平台的自动化测试环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在上一篇iOS自动化测试环境搭建中,我们介绍了如何搭建iOS平台的自动化测试。

        然而,在企业中,我们不仅要进行iOS端的自动化测试,还需要进行android端的自动化测试。所以一个跨平台的自动化测试工具就显得尤为重要,这篇文章,我们就来探索一下如何使用Appium来进行跨平台的自动化测试。

Appium 自动化方案的特点:

  • 开源免费
  • 支持多个平台
  • iOS (苹果)、安卓 App 的自动化都支持。
  • 支持多种类型的自动化
  • 支持 苹果、安卓 应用 原生界面 的自动化
  • 支持 应用 内嵌 WebView 的自动化
  • 支持 手机浏览器 中的 web网站自动化
  • 支持 flutter 应用的自动化
  • 支持多种编程语言

   像 Selenium 一样, 可以用多种编程语言 调用它 开发自动化程序。

自动化原理

 

  • 自动化程序

       自动化程序是由我们来开发的,实现具体的 手机自动化 功能。

       要发出具体的指令控制手机,也需要使用客户端库

       和Selenium一样,Appium 组织 也提供了多种编程语言的客户端库,包括 java,python,js, ruby等,方便不同编程语言的开发者使用。

       我们需要安装好客户端库,调用这些库,就可以发出自动化指令给手机。

  • Appium Server

       Appium Server 是 Appium 组织开发的程序,它负责管理手机自动化环境,并且转发 自动化程序的控制指令 给 手机,并且转发 手机给 自动化程序的响应消息。

  • 手机设备

       我们这里说的手机设备,其实不仅仅是手机,包括所有 苹果、安卓的移动设备,比如:手机、平板、智能手表等。

       为了直观方便的讲解,这里我们简称: 手机

       当然手机上也包含了 我们要自动化控制的 手机应用APP。

       手机设备为什么能 接收并且处理自动化指令呢?

       因为,Appium Server 会在手机上 安装一个 自动化代理程序, 代理程序会等待自动化指令,并且执行自动化指令

比如:要模拟用户点击界面按钮,Appium 自动化系统的流程是这样的:

  • 自动化程序 调用客户端库相应的函数, 发送  点击元素 的指令(封装在HTTP消息里)给 Appium Server
  • Appium Server 再转发这个指令给 手机上的自动化代理
  • 手机上的自动化代理 接收到 指令后,调用手机平台的自动化库,执行点击操作,返回点击成功的结果给 Appium Server
  • Appium Server 转发给 自动化程序
  • 自动化程序了解到本操作成功后,继续后面的自动化流程

其中,自动化代理控制,使用的什么库来实现自动化的呢?

       如果测试的是苹果手机, 用的是苹果的 XCUITest 框架 (IOS9.3版本以后)

       如果测试的是安卓手机,用的是安卓的 UIAutomator 框架 (Android4.2以后)

这些自动化框架提供了在手机设备上运行的库,可以让程序调用这些库,像人一样自动化操控设备和APP,比如:点击、滑动,模拟各种按键消息等。

自动化环境搭建

      上篇我们介绍了iOS的自动化,本篇我们主要讲解安卓APP的自动化。其实都大同小异,iOS端就少了JDK/Android SDK的安装和环境变量的设置。

安装client编程库

      根据原理图, 我们知道自动化程序需要调用客户端库和 Appium Server 进行通信。

      因为我们介绍Python语言开发,所以当然是用pip安装,如下

pip3 install appium-python-client

安装Appium Server

      Appium Server 是用 nodejs 运行的,基于js开发出来的。

      Appium组织为了方便大家安装使用,制作了一个可执行程序 Appium Desktop,把 nodejs 运行环境、Appium Server 和一些工具 打包在里面了,只需要简单的下载安装就可以了。

      可以从 下面给出的链接下载安装: Appium-mac-1.20.2.dmg

      windows和其他平台均可对应下载。

      附加信息: Appium Desktop官方下载,点击这里打开下载页面

安装JDK

      本教程主要讲解 安卓APP的自动化,必须要安装安卓SDK(后面会讲到),而安卓SDK需要 JDK 环境。

      可以从google下载安装: jdk-xxxxx

      安装好之后,还需要添加一个环境变量  JAVA_HOME ,指定 值 为 jdk安装目录,比如

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

安装 Android SDK

      对于安卓APP的自动化,Appium Server 是需要 Android SDK的。

      因为要用到里面的一些工具,比如 要执行命令设置手机、传送文件、安装应用、查看手机界面等。

      可以下载最新的 Android SDK文件包: androidsdk.zip ,并且解压,即可。

      解压完成后,需要 配置一下 添加一个 环境变量  ANDROID_HOME ,设置值为sdk包解压目录,比如

export ANDROID_HOME=/Users/moos/Library/Android/sdk

连接手机

上述的软件环境都准备好以后,要自动化手机APP,需要:

  • 在你运行程序的电脑上 用 USB线 连接上 你的安卓手机

  • 进入 手机设置 ->  关于手机 ,不断点击 版本号 菜单(7次以上),

  • 退出到上级菜单,在开发者模式中,启动USB调试

如果手机连接USB线后,手机界面弹出 类似 如下提示。

image

选择 允许USB调试。

注意:

      有的手机系统,可能需要一些额外的选项需要设置好。

      比如,有的手机,开发者选项里 需要打开  允许通过USB安装应用 等。

      总之,给USB开发调试 尽可能方便的控制手机。

连接好以后,打开命令行窗口, 执行  adb devices -l 命令来列出连接在电脑上的安卓设备。

如果输出 类似如下的内容:

List of devices attached
4d0035dc767a50bb        device product:t03gxx model:GT_N7100 device:t03g

表示电脑上可以查看到 连接的设备,就可以运行自动化程序了。

这篇关于使用Appium搭建跨平台的自动化测试环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086907

相关文章

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin