robotframework-appiumLibrary 应用 - 实现 app 自动化

1、安装appiumLibrary第三方库

运行pip命令:pip install robotframework-appiumlibrary

若已安装,需要更新版本可以用命令:pip install -U robotframework-appiumlibrary

2、安装app自动化环境。

参考我的另外一篇专门app自动化环境安装的文章:https://www.cnblogs.com/Simple-Small/p/10641854.html

3、利用appiumLibrary完成app功能自动化测试。

第一步:导入AppiumLibrary,设置等待超时时间为20s。

第二步:启动appium server。启动真机或者模拟器(本文中为网易MUMU模拟器)

通过 adb devices 命令检测 模拟器是否可用。

第三步:利用open application关键字,打开模拟器上的 柠檬班app。

这一步实际是:与appium server建立连接,并告诉appium server 要在XX设备上操作XXapp.

本案例中, 要去操作系统为Android,版本为6.0.1的设备上,启动 柠檬班app。(ps:appium 是同时支持android和ios设备的。)

所以,需要提供 :

  1. 平台名称 (platformName=Android)
  2. 平台版本号 (platformVersion=6.0.1)
  3. 设备名称 (deviceName=Emulator)
  4. app的包名(app在移动设备上的标识) (appPackage=com.lemon.lemonban)
  5. app的启动activity (appActivity=com.lemon.lemonban.activity.WelcomeActivity)

除此之外,启动与app的会话时,官网提供了更多的参数说明。可参考以下官网地址:

http://appium.io/docs/en/writing-running-appium/caps/

4、AppiumLibrary当中元素定位方式
定位策略说明案例
id匹配元素的resourceId属性id=id=com.lemon.lemonban:id/navigation_tiku
accessibility_id匹配元素的description属性accessibility_id=button3
android使用UiAutomator框架的元素定位android=UiSelector().description('Apps')
xpath使用xpath表达式定位xpath=//*[@text="nmb"]
class匹配元素的class属性class=android.widget.TextView
5、AppiumLibrary关键字说明

以下列举部分关键字说明:

关键字说明
open application打开app应用
close application关闭app并关闭当前的webdriver会话
Quite application关闭app但不关闭当前会话
reset application重置app
remove applicaiton卸载app
get source获取当前页面的源码
get window height获取当前设置的高
get window width获取当前设备的宽
get newtwork connections status获取当前的网络状态
Set network connection status设置网络连接状态
Hide keyboard隐藏键盘
Is keyboard shown键盘是否隐藏
get activity获取当前活跃的activity
swipe滑屏操作
swipe by percent按百分比滑屏操作
get contexts获取当前所有的contexts
switch to context切换到指定的context
click element点击元素
input text元素中输入值
get text获取元素的文本
get element attribute获取元素的属性值
Get element size获取元素的大小
get element location获取元素的坐标值
Execute adb shell执行adb命令
switch application切换app
wait activity等待activity加载
### 6、使用案例

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

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

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

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

相关文章

elastic-job 定时任务 —— elasticjob 介绍与使用教程

文章目录 Elastic-Job 介绍相关依赖elastic-job 目录结构SimpleJob 简单作业编码下载并启动 ZooKeeper编写定时任务代码并启动 Elastic-Job 介绍 概述: Elastic-Job 是当当网开源的一个分布式调度解决方案,基于 Quartz 二次开发的,由两个相…

科普新能源充电桩

充电桩是新能源电动车的配套基础设施,为电动车提供充电服务,与我们的生活也是息息相关,本篇文章来科普一下充电桩基础知识。 充电桩的分类 按照供电方式分类 交流充电桩:特点是小电流、桩体较小、安装灵活;直流充电…

Linux shell编程学习笔记63:free命令 获取内存使用信息

0 前言 在系统安全检查中,内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。 1 free命令的功能、用法和选项说明 1.1 free命令的功能 free 命令可以显示系统内存的使用情况,包括物理内存、交换…

论文1:多模态人类活动识别综述

论文题目:A Review of Multimodal Human Activity Recognition with Special Emphasis on Classification, Applications, Challenges and Future Directions 文献偏旧-2021 1、 专业词汇: Human activity recognition (HAR)-人类活动识别 Wearable …

android中activity与fragment之间的各种跳转

我们以音乐播放、视频播放、用户注册与登录为例【Musicfragment(音乐列表页)、Videofragment(视频列表页)、MusicAvtivity(音乐详情页)、VideoFragment(视频详情页)、LoginActivity&…

时钟资源(参考ug472)

目录 时钟资源(参考ug472)7系列 FPGA 时钟连接差异时钟资源连接关系表时钟资源连接示意图不同时钟区域资源连接图Clock-Capable Inputs介绍布局规则 全局时钟 bufferBUFGCTRL介绍原语参数及端口INIT_OUTPRESELECT_I0/1I0/1CE0/1S0/1IGNORE0/1 真值表时序 BUFGBUFGCE&#xff0c…

日本服务器托管需要注意哪些问题

日本服务器托管是一项涉及多方面因素的重要决策,为了确保托管服务的稳定、高效与安全,企业或个人在托管过程中需要注意以下几个关键问题: 首先,数据中心的基础设施建设标准是决定托管稳定性的关键。这包括数据中心的建筑抗震、抗洪…

单片机关键任务优先级的实现学习

与总体产品联调时,需要各个单机系统严格按照总体要求,进行数据输出,时间的偏差将出现系统异常,控制失败等不稳定情况产生,甚至影响到产品安全。 因此必须确保某些关键任务的优先执行。单片机任务优先级一般有两种方式…

Java 基础知识之 switch 语句和 yield 关键字

传统 switch 语句 传统的 switch 语句我们已经写了一万遍了,以下是一个典型的 switch 语句: int dayOfWeek 3; switch (dayOfWeek) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case…

STM32-I2C

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. I2C通信1.1 I2C通信简介1.2 硬件电路1.3 I2C时序基本单元1.3.1 起始条件和终止条件1.3.2 发送一个字节1.3.3 接收一个字节1.3.4 发送应答和接收应答 1.4 I2C时序1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读…

Java应用系统设计与实现--学生信息管理系统(附解决方案源码)

一、实验目的及要求 1.1实验目的 掌握Java GUI编程技术,了解Swing框架的使用。 掌握MySQL数据库的基本操作,了解如何在Java中连接和操作数据库。 掌握用户权限管理的基本概念和实现方法。 提升综合运用所学知识设计和实现一个完整应用系统的能力…

QThread moveToThread的妙用

官方文档描述 总结就是移动到线程的对象不能有父对象,执行start即起一个线程,示例是将myObject移动到主线程中。QT中这种方式起一个线程是非常简单的。 示例描述以及代码 描述往Communicate线程中频繁添加任务,等任务结束的时候统计计算的结…

【python教程】数据分析——numpy、pandas、matplotlib

【python教程】数据分析——numpy、pandas、matplotlib 文章目录 什么是matplotlib安装matplotlib,画个折线 什么是matplotlib matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 安装matplotlib&…

Node 中基于 Koa 框架的 Web 服务搭建实战

前言 在《Node之Web服务 - 掘金 (juejin.cn)》一文中,我们使用 HTTP 模块构建了后端接口,从而实现了后端服务的开发。可以对此进行进一步优化 http模块代码回顾 const http require("http");const server http.createServer((req, res) > {if (reqUrl.pathna…

【面试八股文】java基础知识

引言 本文是java面试时的一些常见知识点总结归纳和一些拓展,笔者在学习这些内容时,特地整理记录下来,以供大家学习共勉。 一、数据类型 1.1 为什么要设计封装类,Integer和int区别是什么? 使用封装类的目的 对象化:…

阶段三:项目开发---搭建项目前后端系统基础架构:任务13:实现基本的登录功能

任务描述 任务名称: 实现基本的登录功能 知识点: 了解前端Vue项目的基本执行过程 重 点: 构建项目的基本登陆功能 内 容: 通过实现项目的基本登录功能,来了解前端Vue项目的基本执行过程,并完成基…

前端面试题17(js快速检索方法详解)

在前端JavaScript中,快速检索数据通常涉及到数组或对象的搜索。这里我会介绍几种常见的快速检索方法,并提供相应的代码示例。 1. 数组的find和findIndex方法 find: 返回数组中满足条件的第一个元素的值。findIndex: 返回数组中满足条件的第一个元素的索…

基于LSTM的股票价格预测

摘要 本课设旨在利用LSTM(长短期记忆)网络实现股票价格预测,通过收集、预处理股票数据集,并构建预测模型进行训练与优化。实验结果显示,经过优化调整模型参数,模型在测试集上取得了较为理想的预测效果。尽…

《征服数据结构》SparseArray

摘要: 1,SparseArray的介绍 2,SparseArray的代码实现 1,SparseArray的介绍 前面我们讲过《ArrayMap》,用它来实现哈希表,其中存放key和value的数组长度是存放散列表数组长度的二倍。 在哈希表中如果key值是…

SwiftData 模型对象的多个实例在 SwiftUI 中不能及时同步的解决

概览 我们已经知道,用 CoreData 在背后默默支持的 SwiftUI 视图在使用 @FetchRequest 来查询托管对象集合时,若查询结果中的托管对象在别处被改变将不会在 FetchedResults 中得到及时的刷新。 那么这一“囧境”在 SwiftData 里是否也会“卷土重来”呢?空说无益,就让我们在…