自动化测试——APP测试

一、环境配置

1、安装jdk 配置环境变量
2、Android SDK 环境安装
3、Appium Server安装
4、模拟器安装
5、安装appium-python-client Python第三方库

二、APP自动化测试原理

在这里插入图片描述

三、Desired Capabilites——APPium自动化配置项

1、设置参数
2、操作系统
3、选择版本
4、设备名称
5、包名
6、入口程序

四、常用ADB命令

1、连接模拟器
adb connect 127.0.0.1:62001
其他模拟器:雷神、夜神、mumu、逍遥
2、查看连接的设备
adb devices
3、查看被测app的包名及入口启动页面
aapt dump badging apk路径

五、Python代码实现操作手机终端

六、Appium日志查看

1、自动化脚本发送http请求
2、创建会话
3、确认终端设备是否连接,设置参数是否与终端一致
4、appium会推送一个包“AppiumBootstrap.jar”
模拟器上 api包:appium server指令进行接收、操控手机终端
5、响应Http请求
6、下一个Http请求

七、Appium元素定位工具

1、UI Automator view
Android SDK自带的定位工具
位置:Android SDK/tools/ul automatorvier.bat

八、元素常见的属性

  • text
  • resoueld
  • class:元素标签
  • Content-desc: 元素功能描述、语音播报

2、Appium Desktop Inspector
appium server 自带的定位工具

3、Weditor

Uiautomator python 第三方库appUI自动化测试框架

安装Uiatutomator:pip install Uiautomator
命令ol:python -m ulautomator2 init
命令os:pip install weditor
确认安装:cmd
weditor --help

九、Appium界面元素定位方法

1、通过resourceid属性定位

find_element_by_id 返回是webElement对象

2、通过文本定位:

find_element_by_android_uiautomator()

3、通过调用系统自带框架实现元素定位

基于java代码编写——UiSelector实现元素定位

4、通过content-desc/description属性实现元素定位

find_element_by_accessibility_id(“content-desc/description属性值”)

5、通过xpath定位

十、App元素操作

1、APP四大常用元素操作:点击click()、send_keys()、get_attibute()、text()
2、滑屏:多点触控、长按…
3、滑屏操作:左滑、右滑
Swipel(self:T,start_x:int,start_y:int,end_x:int,end_y:int,duration:int=0)

参数说明:

  • start_x:开始位置的x坐标
  • start_y:开始位置的y坐标
  • end_x:结束位置的x坐标
  • end_y:结束位置的y坐标

十一、POM及POM设计原理

POM四层:项目=n个页面=base层+pageobject层
第一层:base层,描述每个页面相同的属性及行为
第二层:pageobject层,每个的独有特征及特有行为
第三层:testcases层,用例层,描述项目业务流程
第四层:testdata层,数据层

十二、 Appium元素定位

1、通用定位策略
(1)ACCESSIBILITY_ID 无障碍访问ID
Android:content-desc
IOS:accessibility-id
(2)ID
Android:resource-id
IOS:name

在Slenium中id具有唯一性,appium的id是继承了Selenium,则在appium中,ID不具有唯一性

(3)Class
(4)Xpath:脆弱
(5)IMAGE:定位图片

2、专用定位策略
为不同平台专用

  • ANDROID_UIAUTOMATOR -UIAUTOMATOR2
  • ANDROID_VIEWTAG
  • ANDROID_DATA_MATCHER

使用UIAUTOMATOR2的语法进行元素定位
‘new uiSelctor( )、text(‘新闻’)’

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

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

相关文章

唯一索引异常捕获aop切面工具类

定义自定义唯一索引捕获注解 /*** author huaqiang* version 1.0* description 自定义唯一索引异常* date 2023/7/28*/ Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) public interface CustomDuplicateKeyException {String[] keyValu…

TCP KeepAlive与HTTP Keep-Alive

TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,那么TCP需要判断是应用程序掉线了还…

在CSDN学Golang云原生(Kubernetes Pod)

一,pod的定义与基本用法 在 Kubernetes 中,Pod 是最小的可部署单元,它包含一个或多个容器。使用 Golang 来定义和操作 Pod 时,需要使用 kubernetes/client-go 包提供的 API。 以下是 Golang 定义和基本用法 Pod 的示例&#xff…

【Java】Spring框架是如何解决Bean创建过程中的循环依赖问题的

文章目录 【Java】Spring框架是如何解决Bean创建过程中的循环依赖问题的引言三级缓存数据结构简介源码阅读如何启动调试?场景1:通过xml配置文件来构造循环引用场景2:通过注解自动装配属性来构造循环引用:以Controller为例 脉络场景…

jdk8使用okhttp发送http2请求

本文主要用于工作记录,在项目中遇到了就记录一下 在早期,原生的JDK8是不支持HTTP/2协议的,所以,要想使用这个特性,需要有web服务器和应用环境的支持, 例如:在VM中增加-Xbootclasspath/p:/Users…

Android Studio 启用设备远程调试配置完整步聚

启用手机设置->开发者选项-无线调试,然后选择允许 已启用后无线调试变成绿色 ,点击无线调试进入详情页面 点击Android Studio的Device Manager 下的WIFI图标 会弹出下图窗口 打开手机的开发者选项中的WIFI调试(无线调试)下的使用二维码配对设备进行扫描. 设备配对成功后手机…

Unity Shader - if 和 keyword 的指令比较

文章目录 环境TestingIf4Sampleunity shaderlab 中的 TestingIf4Sample.shadergraphics analyzer 中的 TestingIf4Sample.glsl TestingKW4Sampleunity shaderlab 中的 TestingKW4Sample.shadergraphics analyzer 中的 TestingKW4Sample.glsl 比较 环境 Unity : 2020.3.37f1 Pi…

在Linux中用strsignal函数输出对各种信号的描述

2023年7月29日&#xff0c;周六上午 目录 函数原型Linux有多少种信号使用示例 函数原型 #include <string.h>char* strsignal(int signum);strsignal函数接受一个整数参数signum&#xff0c;表示信号的编号。 用于把信号编号转换成一个简短的对这个信号编号的描述。 L…

JAVA SE -- 第十一天

&#xff08;全部来自“韩顺平教育”&#xff09; 异常-Exception 一、异常介绍 1、基本介绍 Java语言中&#xff0c;将程序执行中发生的不正常情况为“异常”&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09; 2、执行过程中发生的异常事件可分为两大类 …

FPGA2-采集OV5640乒乓缓存后经USB3.0发送到上位机显示

1.场景 基于特权A7系列开发板&#xff0c;采用OV5640摄像头实时采集图像数据&#xff0c;并将其经过USB3.0传输到上位机显示。这是验证数据流能力的很好的项目。其中&#xff0c;用到的软件版本&#xff0c;如下表所示&#xff0c;基本的硬件情况如下。该项目对应FPGA工程源码…

图注意力网络论文详解和PyTorch实现

图神经网络(gnn)是一类功能强大的神经网络&#xff0c;它对图结构数据进行操作。它们通过从节点的局部邻域聚合信息来学习节点表示(嵌入)。这个概念在图表示学习文献中被称为“消息传递”。 消息(嵌入)通过多个GNN层在图中的节点之间传递。每个节点聚合来自其邻居的消息以更新其…

MyBatis(二)

文章目录 一.MyBatis的模式开发1.1 定义数据表和实体类1.2 配置数据源和MyBatis1.3 编写Mapper接口和增加xxxMapper.xml1.4 测试我们功能的是否实现. 二. Mybatis的增删查改操作2.1 单表查询2.2 多表查询三.动态SQL的实现3.1 什么是动态SQL3.2 动态SQL的使用if标签的使用trim标…

M1/M2 通过VM Fusion安装Win11 ARM,解决联网和文件传输

前言 最近新入了Macmini M2&#xff0c;但是以前的老电脑的虚拟机运行不起来了。&#x1f605;&#xff0c;实际上用过K8S的时候&#xff0c;会发现部分镜像也跑不起来&#xff0c;X86的架构和ARM实际上还是有很多隐形兼容问题。所以只能重新安装ARM Win11&#xff0c;幸好微软…

Spring整合junit

1、导入pom坐标 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</gro…

【LeetCode】169.多数元素

题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;3…

【MySQL】表的操作

今天我们来谈谈MySQL下对表的操作 目录 一、创建表 二、查看表 2.1 查看库中存有的表 2.2 查看表结构 2.3 查看表的创建语句 三、修改表 3.1 重命名表名 3.2 新增列 3.3 修改列的数据类型 3.4 删除列 3.5 重命名列 四、删除表 一、创建表 我们要想在数据库中创建…

SpringMvc+阿贾克斯

0目录 1.SpringMVC 加阿贾克斯 2.分页版 1.实战 创建数据库 创建工程和pom依赖 配置web.xml和applicationContext.xml 实体类 Mapper接口方法 Mapper.xml BookService BookSeriviceImpl 控制层 测试 加入findAll.html 测试 2.分页版 控制层 PostMan测…

华为OD机试真题 Java 实现【AI面板识别】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、控制台输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08…

Redis旁路缓存,大KEY

Redis 旁路缓存 由于高并发原因&#xff0c;先更新数据库和先更新缓存策略都会因为延迟时间而导致数据不一致问题。 两种策略 先删除缓存&#xff0c;再更新数据库&#xff1b;先更新数据库&#xff0c;再删除缓存。 因为缓存的写入通常要远远快于数据库的写入&#xff0c;…

nginx 反向代理浅谈

前言 通常情况下&#xff0c;客户端向Web服务器发送请求&#xff0c;Web服务器响应请求并返回数据。而在反向代理中&#xff0c;客户端的请求不直接发送到Web服务器&#xff0c;而是发送到反向代理服务器。反向代理服务器会将请求转发给真实的Web服务器&#xff0c;Web服务器响…