【学习笔记】——appium移动端自动化测试实战

2023-11-15

  最近学习了appium移动端自动化测试,以qq登录模块的功能进行实战学习。主要涉及到的技术有:python+appium+unittest+数据驱动+weditor查看元素定位+断言+测试报告,最后以pom模式呈现效果。
  在学习过程中,除了元素定位与web UI自动化测试不同,其他部分大同小异,重点在于移动端测试的环境配置和元素定位。环境配置需要下载模拟器(代替真机)、adb连接模拟器、appium-server环境配置。元素定位可以用appium自带工具、uiautomator以及wedtior。在学习过程中会遇到各种各样的问题,即使代码完全正确,可以自行百度解决。
  下面介绍一下本次学习过程:
  项目结构:
first_app.py是我用来对连接模拟器进行测试用的。本次时基于POM模式进行设计的,所以与web测试一样,主要分为base、page、testcase、data四部分,其他按照需求增加了config、report、utils模块。config用于配置driver参数信息,reprot用于存储测试报告、utils用于保存公共函数(读取配置数据、读取测试数据、存放数据驱动的包等等)。
在这里插入图片描述
base模块:
BasePase类用于对drvier基础操作的封装,包括对定位元素、输入、点击、左右滑动、关闭driver等等。
在这里插入图片描述
login_page:
对登录界面的操作进行封装。这里对登录操作的封装分成三部分:输入用户名、输入密码、点击登录按钮。不涉及对真实数据的操作,各参数均进行传入,真实数据在testcase模块,进行业务流操作时进行传入真实数据。
在这里插入图片描述
testcase:
首先对appim的drvier参数进行配置,这里使用yaml进行存储配置数据,主要配置数据为:platformName、platformName、deviceName、appPackage、appActivity、noReset。之后使用ddt进行进行数据驱动。在test_login中传入参数,用代码模拟业务流程,最后进行断言,判断是否登录成功。
在这里插入图片描述
在这里插入图片描述
总结:
以上主要对base、page、testcase进行主要介绍,其他部分可以参照我的主要web端自动化测试篇的介绍。本文的测试报告是使用HTMLTestRunner方法;对于判断是否登录成功是判断登录失败对话框的元素定位是否存在;测试数据是用excel读取。总之,在学习过程中会有各种报错,耐心处理即可。
各位读者请多多指教,欢迎评论!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习笔记】——appium移动端自动化测试实战 的相关文章

  • numba 函数何时编译?

    我正在研究这个例子 http numba pydata org numba doc 0 15 1 examples html multi threading http numba pydata org numba doc 0 15 1 ex
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • vant组件使用van-field解决邮箱校验问题

    需求 用户在返回到上一页的时候 保存用户的编辑资料 所以用户在输入邮箱的时候 校验是否正确 使用van field
  • Redis基础-命令梳理

    文章目录 一 Redis 客户端的基本语法 二 基础数据类型 字符串 String 三 基础数据类型 哈希 Hash 四 基础数据类型 列表 List 五 基础数据类型 集合 Set 六 基础数据类型 有序集合 Sorted set 一 R
  • 关于canvas画布上绘制多个(单个也一样)不规则多边形,用户点击这张画布时,判断点击的是哪个多边形

    首先来看看canvas效果图 上面是我在canvas上绘制了多个不规则多边形 如果不是很了解怎么绘制 可以看我上个博客canvas画图 盒子结构 div class imgBox div
  • Container With Most Water

    Given n non negative integers a1 a2 an where each represents a point at coordinate i ai n vertical lines are drawn such
  • 似然场模型初识

    slam 激光雷达的数学模型之似然场模型 光束模型的缺点 计算量大 每一个位姿需要进行N次raytracing N为每一帧激光的激光束数量 在非结构化环境中 比较杂乱的环境中 使用光束模型会导致当位姿发生微小变化时 得分从非常高一下改变为趋
  • 五人合伙最佳股份分配_有限责任公司与合伙企业傻傻分不清,纳税又有什么不同?...

    我们经常见到许多的公司类型 xx公司xx合伙等等 每种不同的形式纳税是不是有所不同 合伙企业分为 普通合伙企业和有限合伙企业 其中 普通合伙企业又包含特殊的普通合伙企业 1 普通合伙企业由2人以上的普通合伙人 没有上限规定 组成 普通合伙企
  • STL源代码剖析笔记----第一章STL概论与版本简介

    在现在这家公司半年了 虽说也学了不少东西 但是总觉得自己的技术还不够成熟 不过好处就是 有大把的时间可以自己支配 闲来无事便把侯捷先生的STL源代码剖析拿出来看了一下 在工作中用的最多的还是STL 自己也曾尝试些属于自己的一些算法 但是 结
  • easy mock本地部署和nuxt项目初始化

    easy mock本地部署和nuxt项目初始化 一 说明 easy mock和nuxt项目创建初始化用到的nodejs版本有差异 前者需要低版本 后者初始化需要高版本 所以需要nvm管理nodejs版本 安装nvm 下载地址https gi
  • nodejs17/18版本报错:digital envelope routines::unsupported

    一 临时方案 cmd或终端执行 export NODE OPTIONS openssl legacy provider 二 修改系统环境变量 新建一个系统环境变量配置 配置信息如下 NODE OPTIONS openssl legacy p
  • 系统U盘制作工具WinToUSB,也可以将系统安装到U盘

    WinToUSB 轻松将Windows WinPE安装到USB移动硬盘或者U盘 Hasleo WinToUSB是个免费的U盘安装系统工具 可以将操作系统ISO WIM ESD SWM文件或CD DVD光驱安装到U盘或者移动硬盘 Window
  • Hbase学习2:部署

    http dblab xmu edu cn blog install hbase HBASE 官网 https hbase apache org book html preface Use the following legend to i
  • 程序员分类

    程序员 前端 html css javascript bootstrap jQuery Node js Augular TypeScript ReactJS vue js 后端 Java Python Go C C Ruby Node js
  • LeetCode-1615. 最大网络秩【图】

    LeetCode 1615 最大网络秩 图 题目描述 解题思路一 简单暴力 用一个矩阵g记录每对点之间是否连通 如果连通g a b g b a 1 然后用一个一位数组cnt记录每一个点的度 最终答案是每对城市之间的最大网络秩即max cnt
  • 机器学习、深度学习常用专业术语

    主要记录一些深度学习中可能用到的专业术语 一般是碰到了不懂的才记录 所有没有按一定的规律记录 持续更新 1 梯度下降 gradient descent 2 学习速率 learning rate 学习率指每次迭代中 对成本函数的 最小化次数
  • 用 Python 快速追踪基金的收益情况(2022年4月更新)

    来源 Python数据之道 ID PyDataLab 作者 阳哥 大家好 我是阳哥 大家知道 近几年 不少同学都是经由基金进入到股市中的 至于股票和基金到底谁更好 这个仁者见仁智者见智 恐怕一时半会儿也说不清楚 2021年 阳哥曾经分享过
  • 机器学习课后题——贝叶斯

    第四章 贝叶斯分类器 1 简述朴素贝叶斯的优缺点 答 朴素贝叶斯的主要优点有 算法比较简单 易于实现 快速 易于训练 朴素贝叶斯模型有稳定的分类效率 对小规模的数据表现很好 能处理多分类任务 适合增量式训练 尤其是数据量超出内存时 可以一批
  • 今天是我的生日,也是我的离职日!

    前言 时间就是这么巧妙 今天是我的生日 也是我的离职日 职场中有人来 就有人走 本是件很平常的事 在这里祝自己生日快乐 江湖路远 后会有期 今天是我的生日 也是我的离职日 一 往昔 二 ZQ的人事物 三 离职建议 四 后会有期 一 往昔 记
  • 【JavaScript面向对象详解】

    ES6之前的JavaScript面向对象比较不好理解 涉及到很多知识和思想 ES6增加了class和extends来实现类的封装和继承 但是通过babel转换成ES5之后还是之前的一套逻辑 这里 我打算用四篇文章 来讲解一下关于ES5中面向
  • k8s ingress配置wss编排模板

    前段时间遇到了一个k8s配置websocket的问题 需要配置一下 由于wss比较安全 结合tls证书才能配置成功 如果是ws则无法在https的网站上面直接使用 wss才行 下面给出配置文件 希望帮助到需要的伙伴 配置一个新的单独为所有w
  • 【学习笔记】——appium移动端自动化测试实战

    最近学习了appium移动端自动化测试 以qq登录模块的功能进行实战学习 主要涉及到的技术有 python appium unittest 数据驱动 weditor查看元素定位 断言 测试报告 最后以pom模式呈现效果 在学习过程中 除了元