【appium】APP元素操作Api、androidDriver操作Api

news/发布时间2024/5/14 4:56:35

一、元素操作Api

主要是做断言 text

1、click()——触发当前元素的点击事件

2、sendKeys(...)——输入数据

3、clear()——清空内容

4、getAttribute() ——获取属性值

字符串类型属性:

  • content-desc(返回content-desc属性值)

  • text(返回 text)

  • className(返回 class)

  • resourceId(返回 resource-id)

布尔类型属性同UiautomatorViewer里面保持一致

5、getText() =====等同于:getAttribute("text")

获取当前元素的文本值(文本属性值)

6、getTagName()

二、androidDriver操作Api

1、currentActivity()

当前正在前台运行的界面名,我们可以用此API在某些场景进行断言:是否当前activity符合我们的预期等。

//得到当前正在运行的activity
String activity = androidDriver.currentActivity();

2、getPageSource()

可以用于判断当前页面是否有某个元素,或者判断当前页面有没有产生变化:

如:上下滚动判断是否已经到了底端/顶端;

获取app代码源码 用来做断言 根据源码看页面有没有什么变化

⚠️注意是当前页面,当前看到的页面,不是全部页面

//得到当前页面的结构图
androidDriver.getPageSource();

3、其他信息获取类API

  • 获取设备时间信息

    androidDriver.getDeviceTime();
  • 获取设备DPI,注意不是分辨率,屏幕密度 (Density)

    androidDriver.getDisplayDensity();
  • 获取automation name,默认为null,

    如果有指定automation name为uiautomator2就为对应的值

    androidDriver.getAutomationName();
  • 获取设备横竖屏状态,有PORTRAIT(竖屏)与LANDSCAPE(横屏)

    androidDriver.getOrientation();

4、pressKey():KeyEvent 按键——app特有api—— pressKey()

输入android对应的key 激活对应的功能 包括:声音大小、相机、开关机、返回键等等

安卓对应的键:Android KeyCode 安卓键码对照表-CSDN博客

KeyEvent key = new KeyEvent();
key.withKey(AndroidKey.BACK);
driver.pressKey(key);

5、getScreenshotAs() 截图

//手机截图文件
//file对象存在一个临时目录,srcFile
File srcFile = driver.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile,new File("/.../android.png"));

6、坐标点击 TouchAction

选择设置中关于手机->连续点击五次版本号->进入开发者选项->指针位置进行勾选

注意:坐标点击受设备屏幕尺寸/分辨率/DPI影响,万不得已不要使用此种方式
缺点:兼容性差 更换设备后一般不能用
实现方式:(类似于web的拖动:press——release——perform)
TouchAction action = new TouchAction(driver);
//创建坐标点击对象PointOption
//创建点 x y  ⚠️左上角是原点
PointOption point = PointOption.point(493,837);
//点击
action.press(point).release().perform();

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

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

相关文章

Django学习笔记-HTML实现MySQL的图片上传

1.django项目编写index.html代码 创建form表单,路由指向upload,请求方式post,enctype设置"multipart/form-data", post请求添加{% csrf_token %},编写两个input,上传和提交 2.添加upload路由 3.views中创建upload 1).获取上传的文件,没有上传则返回"没有指定…

网站三合一缩略图片介绍展示源码

网站三合一缩略图片介绍展示源码,PHP源码,运行需要php环境支持,效果截图如下 蓝奏云下载:https://wfr.lanzout.com/ihY8y1pgim6j

自然语言处理(NLP)—— 神经网络自然语言处理(2)实际应用

本篇文章的第一部分是关于探索词嵌入(word embedding)向量空间。词嵌入是一种语言模型和文本表示技术,其中单词或短语从词汇表被映射到向量的高维空间中。通过这种方式,可以通过计算向量之间的距离来捕捉单词之间的语义关系。 1.…

【C语言】学生宿舍信息管理系统

目录 项目说明 1. 数据结构设计 2. 功能实现 3. 主菜单设计 4. 文件操作 5. 系统使用 项目展示 1.主菜单功能界面 ​编辑 2.添加信息 3.查询信息 4.修改信息 5.删除信息 6.退出程序 项目完整代码 结语 在这篇博客中,我们将探讨如何使用C语言来开发…

5. informer源码分析-概要分析

k8s client-go k8s informers 实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对 apiserver、对 etcd 的请求压力。Informers 在启动的时候会首先在客户端调用 List 接口来获取全量的对象集…

idea如何建立一个springboot项目

1.打开File -New-Project 2.填写相关信息,Name:### Type:Maven Croup、Artifact、java 版本 注:此时,第一次打开可能会报错,说版本不匹配。注意下方的两个红框,将Server URL的地址改为“https://start.aliyun.com ”…

【蓝桥杯单片机入门记录】动态数码管

目录 一、数码管动态显示概述 二、动态数码管原理图 (1)原理图 (2)动态数码管如何与芯片相连 (3)“此器件” ——>锁存器74HC573 三、动态数码管显示例程 (1)例程1&#xf…

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

订单视角看支付

支付是指为清偿商品交换和劳务活动所引起的债权债务,货币债权从付款人向收付人的转移的过程。支付能力是电商产品的核心能力之一,作为订单同学,有必要了解关联域支付的流程以及基本概念,同时支付领域的很多设计思路与资损防控经验…

Aethir推出其首次去中心化AI节点售卖

Aethir,去中心化GPU云基础设施领导者,宣布其备受期待的节点销售。Aethir是一家企业级的以AI和游戏为重点的GPU即服务提供商。Aethir的去中心化云计算基础设施使GPU提供商能够与需要NVIDIA的H100芯片提供强大AI/ML任务支持的企业客户相连接。 此外&#x…

蓝桥杯Learning

Part 1 递归和递推 1. 简单斐波那契数列 n int(input())st [0]*(47) # 注意这个地方,需要将数组空间设置的大一些,否则会数组越界 st[1] 0 st[2] 1 # 这个方法相当于是递推,即先求解一个大问题的若干个小问题 def dfs(u):if u 1:print(…

「优选算法刷题」:矩阵区域和

一、题目 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c < j k 且(r, c) 在矩阵内。 示例 1&#xff1…

卷积神经网络介绍

卷积神经网络(Convolutional Neural Networks&#xff0c;CNN) 网络的组件&#xff1a;卷积层&#xff0c;池化层&#xff0c;激活层和全连接层。 CNN主要由以下层构造而成&#xff1a; 卷积层&#xff1a;Convolutional layer&#xff08;CONV&#xff09;池化层&#xff1a…

颠覆传统,企业邮件营销如何一键实现个性化、自动化

市场营销大环境&#xff1a;在当今竞争激烈的市场中&#xff0c;邮件营销成为吸引潜在客户和联系人的关键战略。而个性化则是提高电子邮件营销效果的不二选择。在谈论成功的电子邮件营销技巧之前&#xff0c;数据的充足性显得至关重要。如果您的数据不够充足&#xff0c;别担心…

C/C++暴力/枚举/穷举题目持续更新(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码&#xff08;蓝桥杯真题&#xff09; 四、相乘&#xff08;蓝桥杯真题&#xff09; 五、卡片拼数字&#xff08;蓝桥杯真题&#xff09; 六、货物摆放&#xff08;蓝桥杯真题&#xff09; 七、最短路径&#xff08;蓝…

Spring篇----第十篇

系列文章目录 文章目录 系列文章目录前言一、spring JDBC API 中存在哪些类?二、使用 Spring 访问 Hibernate 的方法有哪些?三、列举 spring 支持的事务管理类型四、spring 支持哪些 ORM 框架五、什么是 AOP?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽…

Apache Paimon 主键表解析

Primary Key Table-主键表 1.概述 主键表是创建表时的默认表类型&#xff0c;用户可以插入、更新或删除表中的记录&#xff1b; 主键由一组列组成&#xff0c;这些列包含每条记录的唯一值&#xff1b; Paimon通过对每个桶中的主键排序来强制数据有序&#xff0c;允许用户在…

Qt QWidget 简约美观的加载动画 第五季 - 小方块风格

给大家分享两个小方块风格的加载动画 &#x1f60a; 第五季来啦 &#x1f60a; 效果如下: 一个三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *arg…

Ubuntu服务器fail2ban的使用

作用&#xff1a;限制ssh远程登录&#xff0c;防止被人爆破服务器&#xff0c;封禁登录ip 使用lastb命令可查看到登录失败的用户及ip&#xff0c;无时无刻的不在爆破服务器 目录 一、安装fail2ban 二&#xff0c;配置fail2ban封禁ip的规则 1&#xff0c;进入目录并创建ssh…

Java集合基础梳理(集合体系+ArrayList)

目录 Java集合体系 为什么要使用集合类 ? 如何选用集合? 哪些集合类是线程安全的&#xff1f;哪些不安全&#xff1f; 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么&#xff1f; 遍历的同时修改一个List有几种方式 ArrayList 如何进行元素的遍历操作&#x…
推荐文章