技术分享 | Appium 用例录制

下载及安装
下载地址:

github.com/appium/appi…

下载对应系统的 Appium 版本,安装完成之后,点击 “Start Server”,就启动了 Appium Server。

在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好 desirecapability 信息之后,点击“Start Session”启动会话就展示出下面的页面。Appium Inspector 元素定位页面:

左侧为屏幕快照:可以在左侧使用鼠标选择 UI 元素,会看到它们高亮显示。

中间为页面 DOM 树结构:在应用层次结构中会直接将元素的属性值标记在树上,这对于 Appium 定位元素很方便。

右侧为元素的详细信息:当元素被选中,右侧会展示出元素的详细属性信息列表。这些属性将决定 Appium 定位元素的策略。

另外 Appium Inspector 还提供了页面刷新,页面操作,录制,元素的点击、输入等功能。

Appium自动化用例录制
Appium Inspect 提供了定位元素与录制用例的功能,使用 Appium Inspect 可以查看移动设备的 UI 布局结构,方便脚本的编写和生成。下面以 Android 系统为例。在 Android 模拟器上安装 ApiDemos-debug.apk 应用。

测试应用下载地址:

github.com/appium/samp…

下载该 apk 并安装到测试设备,之后会基于该 app 进行自动化测试。

在录制脚本前启动测试设备,并且通过命令行查看该设备已连接成功。使用下面的命令查看设备是否连接,展示出下面的内容,即说明设备已连接。

$ adb devices List of devices attached emulator-5554 device

上面的结果中,“emulator-5554” 代表设备的名称,“device” 代表设备的状态,说明设备已连接。如果是其它状态,需要重新连接设备,或者在设备上检查是否开启开发者模式,以及打开 USB 调试模式。

获取应用包名和页面名称
移动端的包名(也就是 Package)作为每个 app 的唯一标识,每个 APP 都有自己的 Package Name,且每个设备上相同的包名的 APP,只允许安装一个。

页面(也就是 Activity)是 Android 组件中最基本,也是常见的四大组件之一,可以理解为一个页面就是一个 Activity,移动端打开一个 app 的页面,在操作页面的时候会发生页面的跳转,也就是 Activity 之间发生了切换。在编写测试脚本之前,首先要获取应用的包名以及启动页的 Activity 名字。

获取包名,终端进入 aapt 工具所在目录(Android SDK 的 build-tools 目录下),输入:

aapt dump badging [app名称].apk

运行结果:

图中“package:name”对应的结果是包名,“Lauchable-activity:name”对应的结果是“包名+页面名”。但是有些不符合规范的应用,通过 aapt 命令无法获取到 “Lauchable-activity:name” 这部分内容。

针对上面的问题,就需要在测试设备上启动 APP,然后在终端输入如下命令(Mac OS / Linux 系统):

adb logcat | grep ActivityManager

运行结果如下图:

Appium-desktop自动化用例录制

1. 启动 Appium Server

使用 Appium Inspector 录制测试脚本,首先需要启动 Appium-desktop,点击“Start Server”,如下图:

2. 打开 Appium Inspect 工具

点击右上角“Start inspector Session”按钮,打开 inspector 工具,图形页面如下:

Inspector 就是探测器,给它相应的参数,启动 app 帮你分析移动端 APP 的 UI 界面,还可以使用它录制脚本,支持导出多种语言的测试脚本。

3. 配置 Desired Capabilities 信息

platfromName:使用哪个移动操作系统平台,这里可以填 Android、iOS

deviceName:设备名称,可以随便填,但必须得有此项

appPackage:要启动的 android 应用程序包(“io.appium.android.apis”)

appActivity:App 启动的首页 Activity(“.ApiDemos”或者“io.appium.android.apis/.ApiDemos”)

4. 启动 Session
点击 “Start Session”,录制脚本。

对于 Appium 的初学者,可以通过录制功能,了解编写用例的时候需要使用哪些 API,有哪些编写规范等,可以作为一个很好的参考。

点击“开始录制”按钮(小眼睛图标):

左侧选择要操作的页面元素,在右侧选择要做的操作:

Tap 为点击元素 Send keys 为文本框录入 Clear 为清空文本框

利用上图 1,2 步组合,就可以实现对 app 的操作。比如在截取的页面中鼠标点击“Views”->点击 Tap,再点击“Buttons”->点击 Tap。每操作一步,都会自动生成脚本,如图:

默认生成的语言为 Java-unit,如果想生成其他语言,只要点击下拉栏选择相应选项即可,这里切换成 Python 语言。

把代码复制粘贴到编辑器中,就可以运行。代码如下:

from appium import webdrivercaps = {}
caps["platformName"] = "android"
caps["deviceName"] = "demo"
caps["appPackage"] = "io.appium.android.apis"
caps["appActivity"] = ".ApiDemos"
caps["autoGrantPermissions"] = "true"
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)el2 = driver.find_element_by_id("tv.danmaku.bili:id/expand_search")
el2.click()
el3 = driver.find_element_by_accessibility_id("搜索查询")
el3.send_keys("霍格沃兹测试学院")
driver.quit()

上面是录制出来的代码,录制生成的代码需要手动优化,添加需要的单元测试框架(比如 Pytest,Unittest)使代码更优雅。代码录制对刚入门的人来说还是比较实用的,它的缺点也是很明显:

  • 所有的代码都会在一个文件里,显得代码非常的冗余

  • 不能解决工作中大部分的场景

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

 视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。  

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

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

相关文章

Python基础学习—Pandas数据分析实战剖析【文末送书-09】

文章目录 一.Pandas数据分析1.1 Pandas的主要应用包括:1.2 Pandas核心数据结构1.3 安装和导入Pandas 二.Pandas数据分析实战:用Python进行数据分析1. 数据集介绍2. 数据加载与初步观察3. 数据清洗4. 数据分析4.1 销售趋势分析4.2 热门商品分析 三.Pandas…

将开源免费进行到底,ThreadX开源电脑端GUIBuilder图形开发工具GUIX Studio

上个月微软刚刚宣布将ThreadX RTOS全家桶贡献给Eclipse基金会,免费供大家商用,宽松的MIT授权方式,就差这个GUIX Studio没有开源了,而且Windows还经常检索不到,并且也不提供离线包。 1、软件包有点大,700MB…

力扣第一题-两数之和[简单]

题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任…

【Python百宝箱】Python律动:探索声纹识别与语音合成的Python奇迹

语音的魔法方程:Python引领语音领域的创新探索 前言 在数字化时代,语音处理技术的快速发展为人机交互、安全认证、虚拟现实等领域带来了无限可能。本文深入探讨了声纹识别和语音合成的整合,以及Python在声学领域中的关键角色。通过详细介绍…

分布式事务--分布式事务理论基础

1.本地事务 本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则: 2.分布式事务 分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如: 跨数据源的分布式…

《人工智能导论》知识思维导图梳理【第6章节】

文章目录 第六章 知识图谱1 知识图谱概述2 知识图谱相关概念3 知识图谱的逻辑结构4 知识图谱的数据存储5 知识图谱的构建过程6 例题 markdown内容的分享 第六章 知识图谱 1 知识图谱概述 2 知识图谱相关概念 3 知识图谱的逻辑结构 4 知识图谱的数据存储 5 知识图谱的构建过程 6…

【LeetCode: 2415. 反转二叉树的奇数层 | BFS + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

超过 1450 个 pfSense 服务器因错误链而遭受 RCE 攻击

在线暴露的大约 1450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击,这些漏洞如果链接起来,可能使攻击者能够在设备上执行远程代码。 pfSense 是一款流行的开源防火墙和路由器软件,允许广泛的定制和部署灵活性。 它是一种经济高效…

python 如何快速注释几行代码

在 Python 中,可以使用 # 符号来注释单行代码,也可以使用三重引号 """ 或单引号 来注释多行代码。但如果要注释掉多行代码,手动的添加注释符号可能会比较麻烦。以下是一些快速注释多行代码的方法: 方法一&#x…

在js中浮点数精度丢失问题及使用bignumber处理高精度小数的数学运算

一、精度丢失: 正常计算:0.1 0.2 0.3 js计算:0.1 0.2 0.30000000000000004 正常计算:1 - 0.9 0.1 js计算:1 - 0.9 0.09999999999999998 正常计算:0.0532 * 100 5.32 js计算:0.0532 * …

中国剩余定理

中国剩余定理 一、问题的引入 一个整数除以3余2、除以5余3、除以7余2,求这个整数?答案:23 所谓中国剩余定理基本思想:知道一个整数对于几个不同的模数的余数,那么可以推断出该整数对于这些模数的最小非负整数解。 …

ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙

原文:ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙 - 知乎 目录 收起 Part1 前言 Part2 Open - Interpreter 简介 Part3 安装与运行 Part4 工作场景 1获取网页内容 2 pdf 文件批量转换 3 excel 文件合并 Part5总结 参考资料 往期推…

算法基础十四

二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root …

2023第十四届蓝桥杯国赛 C/C++ 大学 B 组

文章目录 前言试题 A: 子 2023作者思考题解答案 试题 B: 双子数作者思考题解 试题 C: 班级活动作者思考题解 试题 D: 合并数列作者思考题解 试题 E: 数三角作者思考题解 试题 F: 删边问题作者思考题解 试题 G: AB 路线作者思考题解 试题 H: 抓娃娃作者思考题解 试题 I: 拼数字试…

Android 14 应用适配指南

Android 14 应用适配指南:https://dev.mi.com/distribute/doc/details?pId1718 Android 14 功能和变更列表 | Android 开发者 | Android Developers 1.获取Android 14 1.1 谷歌发布时间表 https://developer.android.com/about/versions/14/overview#timeli…

事务--04---分布式系统唯一ID

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 分布式ID一、什么是分布式系统唯一ID2. 二、分布式系统唯一ID的特点 分布式ID-----实现方案1、使用UUID生成分布式ID2、基于数据库自增ID3、Redis生成ID4、号段模式…

【嵌入式开发 Linux 常用命令系列 14.1 -- .bashrc 定义函数】

上篇文章:【嵌入式开发 Linux 常用命令系列 14 – source hello.sh 和 ./hello.sh 的区别】 文章目录 .bashrc 定义函数 .bashrc 定义函数 在 .bashrc 文件中定义别名时,通常不能直接传递参数。别名是用于创建命令的简写形式,它们不支持参数…

人工智能联盟的首件神兵利器——“Purple Llama” 项目,旨为保护工智能模型安全性

Meta公司(Meta Platform Inc),原名Facebook,创立于2004年2月4日,市值5321.71亿美元。总部位于美国加利福尼亚州门洛帕克。 Meta 公司推出了名为“Purple Llama”的项目,旨在保护和加固其开源人工智能模型。…

WINCC8.0脚本调试方法

前言 WINCC是西门子推出的过程可视化系统(SCADA),是基于PC的HMI系统,兼容WINDOWS各种系统,除了强大的图形系统之外,WINCC还具有在线历史趋势、报警记录、用户管理、用户归档等高级功能,而且WINC…

华为OD机试真题-考古学家-2023年OD统一考试(C卷)

题目描述: 有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗? 输入描述: 第一行输入n,n表示石碑碎片的个数。 第二行依次输入石碑碎片上…