自动化测试——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(‘新闻’)’

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

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

相关文章

CAN转EtherNet/IP网关can协议破解服务

JM-EIP-CAN 是自主研发的一款 ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种 CAN 总线和 ETHERNET/IP 网络连接起来。 本网关连接到 ETHERNET/IP 总线中做为从站使用,连接到 CAN 总线中根据节点号进行读写。 技术参数 ETHERNET/IP 技术参数 网关做为 …

选择器jQuery

诚信是你价格不菲的鞋子,踏遍千山万水,质量也应永恒不变。 jQuery选择器大全总结: jQuery选择器是一种用于在HTML文档中选择元素的强大工具。下面是一些常用的jQuery选择器的总结: 基本选择器: 元素选择器&#xff1a…

HarmonyOS/OpenHarmony元服务开发-卡片使用动效能力

ArkTS卡片开放了使用动画效果的能力,支持显式动画、属性动画、组件内转场能力。需要注意的是,ArkTS卡片使用动画效果时具有以下限制: 以下示例代码实现了按钮旋转的动画效果: Entry Component struct AttrAnimationExample { St…

生命在于学习——APP渗透学习笔记

一、app渗透篇 1、Android 简介 自从 Android 被谷歌收购(2005 年),谷歌已经完成了整个开发,在过去的 9 年里,尤其是在安全方面,有很多变化。 现在,它是世界上最广泛使用的智能手机平台&#…

PHP使用Redis实战实录4:单例模式和面向过程操作redis的语法

PHP使用Redis实战实录系列 PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展PHP使用Re…

IT技术面试必备:如何做好IT类技术面试?

博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之…

tinkerCAD案例:25. 量角器 - 测量角度

tinkerCAD案例:25. 量角器 - 测量角度 原文 Now we’re going to make a protractor! A Protractor is one of the most basic, but essential, tools for making measurements. It is, then, surprising that the modern protractor is barely over 200 years ol…

神经网络简单介绍

人工神经网络(artififial neural network) 简称神经网络,它是一种模仿生物神经网络结构和功能的非线性数学模型。 神经网络通过输入层接受原始特征信息,再通过隐藏层进行特征信息的加工和提取,最后通过输出层输出结果。 根据需要神经网络可以…

【机器学习】Linear Regression

Model Representation 1、问题描述2、表示说明3、数据绘图4、模型函数5、预测总结附录 1、问题描述 一套 1000 平方英尺 (sqft) 的房屋售价为300,000美元,一套 2000 平方英尺的房屋售价为500,000美元。这两点将构成我们的数据或训练集。面积单位为 1000 平方英尺&a…

数据可视化 - 动态柱状图

基础柱状图 通过Bar构建基础柱状图 from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加X轴 bar.add_xaxis(["中国", "美国", "英国"]) # 添加Y轴 # 设置数值标签在右侧 b…

乌班图22.04安装wireguard实现异地组网

1. 前言: wireguard是新型的异地组网工具,在此之前,又已经被抛弃的pptp,l2tp,有配置复杂的openvpn,wireguard被linux作者linus赞叹优雅,于linux 5.6合并至linux内核主线。 2. 安装过程&#…

【1.3】Java微服务:Spring Cloud版本说明

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…

【Java面试丨消息中间件】Kafka

一、kafka是如何保证消息不丢失 1. 介绍 使用kafka在消息的收发过程都有可能会出现消息丢失 (1)生产者发送消息到broker丢失 (2)消息在broker中存储丢失 (3)消费者从broker接收消息丢失 2. 生产者发送消…

Day47 算法记录|动态规划14子序列

子序列 1143. 最长公共子序列1035.不相交的线53. 最大子数组和 1143. 最长公共子序列 这道题和718. 最长重复子数组的区别:这道题的子序列可以不连续 这个视频讲解的很好 class Solution {public int longestCommonSubsequence(String text1, String text2) {char…

[Linux]线程基本知识

概念 进程 一个正在执行的程序,它是资源分配的最小单位 进程中的事情需要按照一定的顺序逐个进行 进程出现了很多弊端: 一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程; 二是由于对称多…

高德地图JS API升级到2.0版本

项目上反馈高德地图底图信息更新不及时,不利于进行点位规划。经研究发现高德地图JS API 1.4.15版本相对于2.0版本,确实地图切片上的标注信息较少。通过工单的形式询问高德的技术工程师认识到1.4.15版本数据更新有延迟,1.4.15版本地图的数据以…

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统: 微软的操作系统主要是 Windows 系列,包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统(Microsoft System)是美国微软开发的Wi…

7.27 Qt

制作简易小闹钟 Timer.pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # dep…

进程_PCB 的理解

目录 一. PCB 的概念 1. 为什么需要PCB 2. PCB的属性 二. task struct 1. task struct 介绍 2. 查看进程指令 3. PID 4. PPID 父进程是什么? 为什么要有父进程? 5. fork 创建子进程 1) fork 后的现象 为什么会打印两次? 2) 的返…

matplotlib从起点出发(6)_Tutorial_6_Animations

1 在matplotlib中使用动画 基于其绘图功能,matplotlib还提供了一个使用动画模块生成动画animation的接口。动画是一系列帧,其中每个帧对应于图形Figure 上的一个绘图。本教程介绍了有关如何创建此类动画的一般准则以及可用的不同选项。 import matplot…