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、使用案例

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

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

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

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

相关文章

设计模式探索:策略模式

1. 什么是策略模式(Strategy Pattern) 定义 策略模式(Strategy Pattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而…

打卡第4天----链表

通过学习基础,发现我的基本功还得需要再练练,思路得再更加清晰明了,这样子做算法题才能驾轻就熟。每天记录自己的进步。 一、两两交换 题目编号:24 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本…

[数据结构] 基于交换的排序 冒泡排序快速排序

标题:[数据结构] 基于交换的排序 冒泡排序&&快速排序 水墨不写bug (图片来源于网络) 目录 (一)冒泡排序 优化后实现: (二)快速排序 I、实现方法: &#…

opencv环境搭建-python

最近遇到了一些图像处理的需求,所以需要学习一下opencv,来记录一下我的学习历程。 安装numpy pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy安装matplotlib pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib安装opencv …

ctfshow web入门 web338--web344

web338 原型链污染 comman.js module.exports {copy:copy };function copy(object1, object2){for (let key in object2) {if (key in object2 && key in object1) {copy(object1[key], object2[key])} else {object1[key] object2[key]}}}login.js var express …

gcc/g++的四步编译

目录 前言1.预处理(进行宏替换)2.编译(生成汇编)3.汇编(生成二进制文件)4. 链接 (生成可执行文件)a. 动态库 && 动态链接b. 静态库 && 静态链接c. 验证d. 动静态链接…

技术实现路径怎么写?(Word项目技术路径文档参考)

软件项目编写技术实现路径至关重要,因为它为项目团队提供了清晰的开发蓝图。这一路径明确了从项目启动到交付各阶段所需的技术方案、步骤及预期成果,有助于团队统一认识,确保开发工作有序进行。同时,技术实现路径有助于识别潜在的…

HetuEngine简介

目录 HetuEngine是什么? HetuEngine的特点以及使用场景 特点 使用场景 HetuEngine介绍 结构 近期用到了Hetu,了解下这个工具是起什么作用的。 HetuEngine是什么? 是引擎,设计是为了让与当前的大数据生态完美融合的引擎&am…

本安防爆手机:危险环境下的安全通信解决方案

在石油化工、煤矿、天然气等危险环境中,通信安全是保障工作人员生命安全和生产顺利进行的关键。防爆智能手机作为专为这些环境设计的通信工具,提供了全方位的安全通信解决方案。 防爆设计与材料: 防爆智能手机采用特殊的防爆结构和材料&…

Mysql部署MHA高可用

部署前准备: mysql-8.0.27下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar mha-manager下载地址:https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-mana…

为什么需要做网络安全服务?

网络安全服务之所以重要,是因为它在保护数字资产、维护企业运营、确保法规遵从、防范恶意行为以及建立信任等方面扮演着关键角色。以下是一些主要的理由: 保护核心资产和数据: 数字化转型使得企业数据变得极其宝贵,包括知识产权、…

深度学习模型加密python版本

支持加密的模型: # torch、torch script、onnx、tensorrt 、torch2trt、tensorflow、tensorflow2tensorrt、paddlepaddle、paddle2tensorrt 深度学习推理模型通常以文件的形式进行保存,相应的推理引擎通过读取模型文件并反序列化即可进行推理过程. 这样一来&#…

20K Stars!一个轻量级的 JS 库

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 Driver.js 是一个轻量级的 JavaScript 库,旨在帮助开发人员创建网站或应用程序的引导和教程。通过 Driver.js,您可以引导用户了解网站的各个功能和使用方式。 Driver.js 提供了高度可定制的功能,使其能够适应各种需求和…

使用Python绘制和弦图

使用Python绘制和弦图 和弦图效果代码 和弦图 和弦图用于展示数据的多对多关系,适合用于社交网络、交通流量等领域的分析。 效果 代码 import pandas as pd import holoviews as hv from holoviews import opts hv.extension(bokeh)# 示例数据 data [(A, B, 2),…

印尼网络安全治理能力观察

在全国国际机场的移民服务完全瘫痪 100 多个小时后,印尼政府承认其新成立的国家数据中心 (PDN) 遭受了网络攻击。 恶意 Lockbit 3.0 勒索软件加密了存储在中心的重要数据,其背后的黑客组织要求支付 800 万美元的赎金。 不幸的是,大多数数据…

性能测试相关理解(一)

根据学习全栈测试博主的课程做的笔记 一、说明 若未特别说明,涉及术语都是jmeter来说,线程数,就是jmeter线程组中的线程数 二、软件性能是什么 1、用户关注:响应时间 2、业务/产品关注:响应时间、支持多少并发数、…

深入解析 androidx.databinding.Bindable 注解

在现代 Android 开发中,数据绑定 (Data Binding) 是一个非常重要的技术。它使得我们能够简化 UI 和业务逻辑之间的连接,从而提高代码的可读性和维护性。在数据绑定中,Bindable 注解是一个关键部分,它帮助我们实现双向数据绑定和自…

【车载开发系列】GIT安装详细教程

【车载开发系列】GIT安装详细教程 【车载开发系列】GIT安装详细教程 【车载开发系列】GIT安装详细教程一. GIT软件概念二. GIT安装步骤三. GIT安装确认三. GIT功能使用1)Git Bash2)Git CMD3)Git FAQs4)Git GUI 一. GIT软件概念 G…

数据库系统原理 | 查询作业1

整理自博主本科《数据库系统原理》专业课自己完成的实验课查询作业,以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方,欢迎各位斧正。 专业课本: ​ ———— 本次实验使用到的图形化工具:Heidisql…

云端AI大模型群体智慧后台架构思考

1 大模型的调研 1.1 主流的大模型 openai-chatgpt 阿里巴巴-通义千问 一个专门响应人类指令的大模型。我是效率助手,也是点子生成机,我服务于人类,致力于让生活更美好。 百度-文心一言(千帆大模型) 文心一言"…