如何搭建App自动化测试框架?

前言

Appium是一个开源的自动化测试框架,支持跨平台,支持多种编程语言,可用于原生,混合和移动web应用程序,使用webdriver驱动ios,android应用程序、那么为了学习app自动化测试首要任务肯定就是搭建测试开发环境, 因此在这里记一次搭建Appium自动化测试环境的完整过程,文章较长,需要花费一定的时间,请耐心阅读,如果文中有什么错误请指正

安装Java JDK

JDK环境可以看我之前安装Jenkins

安装Node.js

安装nodejs之前,我们需要知道,为什么要安装nodejs? 因为appium是nodejs实现的,node相当于appium的解释器

Node.js下载地址:Download | Node.js

由于我的电脑是windows 64位的系统,这里我直接下载windows 64位的msi程序文件

下载完成后直接双击安装即可(傻瓜式的安装),所以我就不说具体步骤了,安装后,检查是否安装成功

cmd终端输入第一个命令 node -version,输出下面的信息

接着再输入 npm 命令,输出下面的信息

ok, 这说明node.js已经安装成功

安装Appium server

不知道你做过或者学习过selenium没有,这里的appium server 相当于 selenium中的浏览器驱动程序,当启动浏览器驱动时会初始化一个服务器,绑定本机的地址和端口,那么Appium server也一样,当启动appium时同样会初始化一个服务器绑定本地的地址和端口

安装server有两种方式

第一种:使用npm工具

使用命令 npm install -g appium 安装,不过这种安装方式比较慢(我用这种方式没安装成功,可能网速不行,报了一些错误,比较尴尬)

第二种:安装desktop版本

这种安装方式还是比较快的,但是下载安装包也比较慢,好歹安装没出现什么问题

下载地址

https://bitbucket.org/appium/appium.app/downloads/(modify at: 2019.08.12-这个地址不要用了,我后来才发现里面的版本并不是最新的,是很老的版本,对后期定位app中的toast会失败)

https://github.com/appium/appium-desktop/releases (这个是官网的地址,按下图下载最新的安装即可)

下载完成之后,直接双击安装

这里我也不叙述安装过程了,同样的傻瓜式安装,默认安装目录: C:\Users\v-xug\AppData\Local\Programs\Appium

配置环境变量

appium安装目录下的node_modules\.bin添加到系统环境变量(添加放看后面吧)

注:老版本的有这个目录,新版的我还真没找到这个目录,所以也不需要配置环境变量了-modify at: 2019.08.12

安装完成后能够成功打开桌面的appium程序,说明安装过程暂时没什么问题

安装Android SDK

下载SDK及安装

下载地址: AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载

下载完成后,直接双击安装即可

安装完成后,找到你的安装目录,并找到SDK-manager工具双击打开

自己根据需求选择对应的sdk build-tools,Android SDK Platform-tools及api,api我选择的API 22(5.1.1)版本

Android SDK Platform-tools, SDK build-tools我这里是直接下载安装的最新版本,如果你下载的版本比较低的话,后面链接模拟器或者真机时可能会链接不上

点击上图中的[Install packages],弹出下面的页面,点击Accept License后安装,等待所有包安装完成(所需时间比较久,请耐心等待)

配置环境变量

新建系统变量

ANDROID_HOME=D:\Program Files\Android\android-sdk变量及值(SDK的安装目录)

添加系统变量

把platform-tools及tools添加到系统环境变量,变量值(路径)之间使用分号隔开,两个变量值分别为:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;或者直接添加绝对路径

配置完环境变量之后,我们就可以使用adb命令了

安装Appium Client

我们使用python开发appium的自动化测试脚本,肯定离不开appium的一些api库,所以说这里的appium 客户端就是python代码使用的库,用来连接appium server 及操作app

安装appium client 就非常简单了,只要你已经配置好了python环境,就可以直接使用pip安装了,cmd 执行pipi install Appium-Python-Client即可完成安装,输入下图命令不报错,代表已经安装成功

环境检查

注:这里我只在老版本的appium中找到 appium-doctor这个工具, 新版的并没有找到,那怎么办呢?

打开CMD执行命令 npm install -g appium-doctor 安装appium-doctor

现在们就可以使用appium-doctor命令检查整个环境是否有问题了

cmd执行 appium-doctor命令,如何你的输出信息和我的一样那么恭喜你环境搭建成功了

安装模拟器

所有的环境已经安装完成,接下来就是链接手机模拟器或者真机了,我这里使用的是夜神模拟器,下载地址:夜神安卓模拟器-安卓模拟器电脑版下载_安卓手游模拟器_手机模拟器_官网

下载完成后直接安装,安装完成后,桌面会生成两个图标,夜神模拟器和夜神多开器

连接模拟器

开启模拟器的开发者模式

点击模拟器的设置-点击关于平板电脑-点击版本号(会有提示点击几次打开开发者模式)

打开CMD终端,切换cmd 的工作目录到夜神模拟器的安装目录的bin目录下(或者你把这个目录添加到环境变量也可以,但是最好不要添加到环境变量,因为bin目录下也存在一个adb.exe会和Android SDK中的adb.exe冲突),执行命令 nox_adb.exe connect 127.0.0.1:62001(不同模拟器的这个端口号不同)

如果执行命令时提示类似:abd server version(40) doesn't match this client (36) 这样的失败信息,那么说明你的server(夜神模拟器的adb(nox_adb.exe))和client(Android SDK中的adb)版本不对应

检查版本

cmd 输入 adb version 查看client版本

cmd切换到夜神安装目录的bin目录下,执行nox_adb.exe version

我的版本是一样的,你的可能是两个不同的版本号, 你需要把Android SDK中的adb拷贝到夜神模拟器安装目录下的bin目录下,并重命名为nox_adb.exe 并替换原来的即可

连接模拟器

接下来我们就可以测试连接是否正常了,输入命令 nox_adb.exe connect 127.0.0.1:62001(这里要注意执行命令的目录,应为夜神模拟器安装目录的bin目录下)

看到上面的提示后,接着再次输入命令 adb devices (注意:不要在上面的目录下继续输入命令,因为bin下同样存在一个adb.exe ,如果你还在这个目录下执行adb命令,那么使用的并不是Android SDK中的adb,所以切换到其他任意目录执行命令)

如果你看到的是上图中的信息, 说明已经成功连接上了模拟器, 这里只能说明Android的开发环境没问题了,但是进行自动化时还不一定能够正常控制模拟器

测试环境验证

下面我们通过编写一段简单的代码程序,验证一下程序是否能够成功驱动模拟器打开指定的app,如果没有报错,那么到此为止整个appnium自动化测试环境就已经完成了

打开appium,并启动服务器,保持模拟器开启状态

测试代码

编写如下测试代码


"""

------------------------------------

@Time : 2019/7/30 19:47

@Auth : linux超

@File : appium_test.py

@IDE : PyCharm

@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!

@QQ : 28174043@qq.com

@GROUP: 878565760

------------------------------------

"""

from appium import webdriver



desired = {

"platformName": "Android",

"platformVersion": "5.1.1",

"deviceName": "e9b768eb7d2a",

"appPackage": "com.xxzb.fenwoo",

"appActivity": "com.xxzb.fenwoo.activity.addition.WelcomeActivity"

}


driver = webdriver.Remote(

command_executor="http://127.0.0.1:4723/wd/hub",

desired_capabilities=desired)

以上代码desired_capabilities参数,暂不做介绍

输出

对应app被成功打开,表示整个环境已经没有任何问题了,接下来就可以愉快的开启我们的app自动化测试了

总结

最后,回顾一下搭建环境过程中需要注意的点

1.如果在安装appium的时候提示缺少.net framework 4.5 那么先下载安装它,再安装appium即可https://www.microsoft.com/zh-cn/download/details.aspx?id=30653

2.下载最新的appium,防止定位app的toast时无法定位

3.注意Android SDK 中adb的版本和模拟器中nox_adb的版本需要相同

4.下载Andorid SDK的时候一定要安装最新的 platform-tools,防止后面连接模拟器或者真机时遇到不可预料的错误(找不到adb命令等)

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

scratch数学计算 2024年6月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch数学计算 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、p…

shell脚本-linux如何在脚本中远程到一台linux机器并执行命令

需求:我们需要从11.0.1.17远程到11.0.1.16上执行命令 实现: 1.让11.0.1.17 可以免密登录到11.0.1.16 [rootlocalhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created d…

【密码学】密码学数学基础:剩余系

不得不啃的密码学数学基础之剩余系是个啥?数学里面有好多的定义都有前置的数学概念,要想弄懂剩余系还得先说说“同余”。 一、同余 那么“同余”有是个什么呢?在谈论“同余”之前,我们先圈定个讨论的范围。接下来讨论的都是整数集…

linux基本指令的学习

文章目录 ls指令pwd指令小知识 cd 指令小知识 touch 指令mkdir指令rm指令小知识 man指令cp指令mv指令cat,more,less指令小知识 (echo)head 和 tail指令小知识 (管道) date指令小知识 (时间戳) find指令小知…

STM32(五):STM32指南者-按键控制灯开关实验

说明:源代码和教程可从野火处下载,本博客为了记录学习过程STM32(四):STM32指南者-跑马灯实验的基础上 一、采用轮询方式1、bsp_key.h2、bsp_key.c3、main.c 二、采用中断方式1、bsp_exti.h2、bsp_exti.c3、stm32f10x_i…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

鸿蒙模拟器(HarmonyOS Emulator)Beta申请审核流程

文 | Promise Sun 一.背景: 鸿蒙项目开发需要使用模拟器进行开发测试,但目前想在DevEco Studio开发工具中使用模拟器就必须到华为官网进行报名申请,参加“鸿蒙模拟器(HarmonyOS Emulator)Beta活动申请”。 申请审核通…

cleanshot Mac 上的截图工具

笔者闲来无事,最近在找一些mac上好用的工具其中一款就是cleanShot。为什么不用原有的mac自带的呢。因为相对来说编辑功能不算全面,不支持长截图。那有没有一款软件支持关于截图的好用工具呢。 所以笔者找了这款。安装包是直接安装就可使用的。请大家点赞…

AI算法17-贝叶斯岭回归算法Bayesian Ridge Regression | BRR

贝叶斯岭回归算法简介 贝叶斯岭回归(Bayesian Ridge Regression)是一种回归分析方法,它结合了岭回归(Ridge Regression)的正则化特性和贝叶斯统计的推断能力。这种方法在处理具有大量特征的数据集时特别有用&#xff…

STM32第九课:STM32-基于标准库的42步进电机的简单I/O控制(附电机教程,看到即赚到)

一:步进电机简介 步进电机又称为脉冲电机,简而言之,就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩,步进电机的角位移量与输入的脉冲个数严格成正比…

4000厂商默认账号密码、默认登录凭证汇总.pdf

获取方式: 链接:https://pan.baidu.com/s/1F8ho42HTQhebKURWWVW1BQ?pwdy2u5 提取码:y2u5

Linux编程乐趣《简单、有趣、好玩的Linux命令》

文章目录 一、黑客帝国(cmatrix)1.1 centOS 手动安装:1.2 . 运行1.3 . 效果 二、cal命令三、htop四、sl:蒸汽火车五、cowsay:会说话的小牛六、boxes七、pv 一、黑客帝国(cmatrix) 1.1 centOS 手动安装: #…

2024.7.12单片机PWM

遇到了一个光标变成下划线的问题: Keil5光标变下划线,变回来的方法_keil5光标是下划线-CSDN博客 这里是用了输入捕获(IC:input capture),输出比较(OC:Output Compare)区别 学到这…

加速访问:优秀的Python、Java、Javascript和Linux镜像站点推荐

前言 当访问位于国外的官方网站时,常常会面临到网速缓慢或者无法访问的问题,这不仅令人沮丧,也影响了工作效率。为了解决这些问题,我开始寻找并使用一些镜像站点,特别是在Python、Java、Javascript和Linux等领域。 这…

3DMAX造山地形插件Mountain使用方法详解

3DMAX造山地形插件Mountain使用教程 3DMAX造山地形插件Mountain,用于在3dMax中轻松快速地创建逼真的山脉地形。它具有交互性、快速性和易用性,初学者只需点击一下即可,高级用户可以使用各种丰富的参数。Mountain创建简单的3dMax几何体&#x…

C++ //练习 15.17 尝试定义一个Disc_quote的对象,看看编译器给出的错误信息是什么?

C Primer(第5版) 练习 15.17 练习 15.17 尝试定义一个Disc_quote的对象,看看编译器给出的错误信息是什么? 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /********************…

Python机器学习、深度学习技术提升气象、海洋、水文领域实践技术

Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…

STM32+TMC2209控制步进电机正反转。

STM32F103ZET6TMC2209控制步进电机正反转 1. 步进电机介绍2 驱动器TMC2209介绍2.1 引脚图及其功能2.2 细分介绍2.3 TMC控制驱动器接法 3 控制器介绍3.1 确定控制引脚3.2 UBEMX配置3.2.1 GPIO配置3.2.2 NVIC配置3.2.3 RCC配置3.2.4 SYS配置3.2.5 USRAT2配置(PS:没用上…

《Programming from the Ground Up》阅读笔记:p49-p74

《Programming from the Ground Up》学习第3天,p49-p74总结,总计26页。 一、技术总结 1.function (1)定义 p49, Functions are unit of code that do a defined piece of work on specified types of data。 函数是在指定类型的数据上完成所定义的某…