appium自动化测试完整项目

news2024/10/6 10:38:33

 前言

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

安装Java JDK

JDK环境可以看我之前安装Jenkins这里需要注意一点尽量安装jdk 1.8,防止后面链接手机失败

安装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即可Download Microsoft .NET Framework 4.5 from Official Microsoft Download Center

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

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

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

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

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

相关文章

数据治理的核心框架和六大思维

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 数据成为新的生产力,必将引发数据生产关系的变革,而数据治理体系就代表着新的生产关系。近日发布的《广东省数据要素市场化配置改革理论研…

尚融宝18-JWT令牌和测试

目录 一、访问令牌的类型 (一)reference token(透明令牌) (二)value token(自包含令牌) 二、JWT令牌 (一)什么是JWT令牌 (二)JWT令牌的组成 (三)JWT的…

java 25

练习一: package com.shhfg.ds;public class HelloWorld01 {public static void main(String[] args) {/* 需求:给你一个整数 a如果 a 是一个回文整数,打印true,否则,还回false。解释:回文数是指正序(从左到…

kaggle竞赛-Stable Diffusion数据分析与baseline

你的目的是来预测我们生成图像的提示词 1.比赛目标 这个竞赛的目标不是从文本提示生成图像,而是创建一个模型,可以在给定生成图像的情况下预测文本提示(你有一堆提示词,你预测是否该提示词参与了图像的生成)?您将在…

百度智能云对象存储BOS批量下载文件方法

百度智能云对象存储BOS支持批量打包下载吗?目前对象存储BOS浏览器端不支持批量下载,可以使用对象存储BOS桌面或BOSCMD批量下载,也可以使用API/SDK调用接口循环下载。新手站长网来详细说下百度云对象存储BOS批量下载的方法: 目录 …

计算机网络 实验二

⭐计网实验专栏,欢迎订阅与关注! ★观前提示:本篇内容为计算机网络实验。内容可能会不符合每个人实验的要求,因此以下内容建议仅做思路参考。 一、实验目的 (1)掌握IP地址的基本结构(网络部分与主机部分的…

计算广告(十一)

MF矩阵分解(Matrix Factorization)是一种常见的数学工具,它将一个大型矩阵分解为两个或多个较小的矩阵,这些较小的矩阵相乘会得到一个近似于原始矩阵的矩阵。矩阵分解在许多领域中都有广泛的应用,如机器学习、数据挖掘…

Win10+Anaconda+Pytorch_CPU+VsCode安装配置

一、安装Anaconda 1,官网下载Anaconda安装包,找到对应版本的python,我下的是Anaconda3-2020.07-Windows-x86_64.exe,python版本为3.8.3; 安装时注意这个界面时 第一个不要勾选,安装成功后,手动…

如何在企业微信中使用低代码工具?

企业微信是一款非常强大的办公应用软件,可以方便地进行企业内部的沟通、协作、管理等工作。虽然企业微信本身并不提供低代码工具,但是可以通过集成第三方的低代码工具来实现在企业微信中的使用。 例如,可以使用低代码平台简道云,…

Python3--垃圾回收机制

一、概述 Python 内部采用 引用计数法,为每个对象维护引用次数,并据此回收不在需要的垃圾对象。由于引用计数法存在重大缺陷,循环引用时由内存泄露风险,因此Python还采用 标记清除法 来回收在循环引用的垃圾对象。此外&#xff0c…

「线性DP-学习案例」传球游戏

传球游戏 题目描述 ​ 上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。 ​ 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球…

Systemverilog中Assertions的记录

1. assertion statement Assertion statement有以下几种类型: assert: 指定DUT的property,必须要verifyassume: 给验证环境指定假设的property。simulator检查这些property,但是formal工具会使用这些信息来产生输入激励。cover: 监控proper…

面试题:Ajax、Fetch、Axios三者的区别

Ajax 它的全称是:Asynchronous JavaScript And XML,翻译过来就是“异步的 Javascript 和 XML”。 Ajax 是一个技术统称,是一个概念模型,它囊括了很多技术,并不特指某一技术, Ajax 是一种思想,X…

【Hello Network】网络编程套接字(一)

作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:简单介绍网络的基础概念 网络编程套接字(一)预备知识源ip和目的ip端口号TCP和UDP协议网络中的字节序socket编程接口socket常见…

爬虫1000+个C程序

爬虫1000个C程序 问题场景 由于实验需要,我需要1000个elf文件,可是网络可获取的elf文件较少,c程序较多,所以首先下载c程序,之后gcc编译链接生成elf文件。我需要的C源码不是项目级别的,正常100行左右就可以…

PNAS:土地利用和土地覆盖的变化决定了保护区的可持续性和影响

PNAS 中文题目: 土地利用和土地覆盖的变化决定了保护区的可持续性和影响 英文题目: Land-use and land-cover change shape the sustainability and impacts of protected areas 作者: Determinants and impacts of protected area remova…

MATLAB 神经网络变量筛选—基于BP的神经网络变量筛选(链接在文末)

灰色系统理论是一种研究少数据、贫信息、不确定性问题的新方法,它以部分信息已知,部分信息未知的“小样本”,“贫信息”不确定系统为研究对象,通过对“部分”已知信息的生成、开发,提取有价值的信息,实现对…

软考第六章 网络互连与互联网

网络互连与互联网 1.网络互连设备 组成因特网的各个网络叫做子网,用于连接子网的设备叫做中间系统。它的主要作用是协调各个网络的工作,使得跨网络的通信得以实现。 网络互连设备可以根据它们工作的协议层进行分类: 中继器:工…

双周赛102(模拟、BFS技巧、求最短路模板问题)

文章目录双周赛102[6333. 查询网格图中每一列的宽度](https://leetcode.cn/problems/find-the-width-of-columns-of-a-grid/)模拟[6334. 一个数组所有前缀的分数](https://leetcode.cn/problems/find-the-score-of-all-prefixes-of-an-array/)模拟(一次遍历)😭[6335…

【黑马】JavaWeb开发教程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)目录合集

​Java Web 传统路线: 课程讲述路线: 视频链接: 2023新版JavaWeb开发教程,实现javaweb企业开发全流程 学习时间: 断断续续,按照课程安排正常学习,历时15天,完结撒花!…