Appium的学习总结-Inspector参数设置和界面使用(5)
环境搭建好后,怎么使用呢?
环境这里使用的是:
Appium的Server端GUI 22版本
Inspector需要单独下载安装,GUI里并没有集成。
(使用Appium v1.22.0,查看元素信息需要另外安装下载Appium Inspector)
操作:
Server端:需要Edit Configure:将JDK和Android SDK的环境路径写进去。Start Server
Inspector端:
Inspector 的参数如何获取:
platformName: 指定移动设备平台的名称,例如 Android 或 iOS。必填参数。
deviceName: 指定移动设备的名称。必填参数。
appPackage: 指定应用程序的包名。必填参数。
appActivity: 指定应用程序的启动页面名称。必填参数。
platformVersion: 指定移动设备的操作系统版本。可选参数。
app: 指定要安装到设备上的应用程序文件的路径。可选参数。
noReset: 指定是否在每次启动应用程序时重置应用程序的状态。可选参数,默认为 false。
skipDeviceInitialization: 跳过初始化操作
automationName: 指定 Appium 使用的自动化测试框架的名称。可选参数,默认为 Appium。
udid: 指定移动设备的唯一设备标识符。可选参数。
newCommandTimeout: 指定新命令的超时时间,以毫秒为单位。可选参数,默认为 60 秒。
autoGrantPermissions: 指定是否在启动应用程序时自动授予所有权限。可选参数,默认为 false。
unicodeKeyboard: 指定是否启用 Unicode 输入法,用于支持非英语语言的输入。可选参数,默认为 false。
resetKeyboard: 指定是否在测试结束后重置输入法设置。可选参数,默认为 false。
fullReset: 指定是否在测试结束后完全重置应用程序的状态和数据。可选参数,默认为 false。
browserName: 指定要在设备上启动的浏览器的名称。可选参数。
chromeOptions: 指定要传递给 Chrome 浏览器的选项。可选参数。
safariAllowPopups: 指定是否允许 Safari 浏览器弹出窗口。可选参数,默认为 false。
nativeWebTap: 指定是否在原生应用中使用原生的 web 点击事件。可选参数,默认为 false。
disableWindowAnimation: 指定是否禁用设备窗口动画。可选参数,默认为 false。
ignoreUnimportantViews: 指定是否忽略屏幕上的不相关视图,以加速测试执行。可选参数,默认为 false。
androidScreenshotPath: 指定 Android 设备上截图的存储路径。可选参数。
networkSpeed: 指定模拟设备的网络速度。可选参数。
这里我的一个小米真机调试的Demo:
{
"platformName": "Android",
"appium:platformVersion": "14", #这里需要通过
"appium:deviceName": "e3691", # 自己设备名称,需要更改
"appium:appPackage": "com.sankuai.meituan", #测试的美团
"appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity", # 页面名字
"appium:automationName": "UiAutomator2"
}
在inspector的页面save,导入到左侧
appium:platformVersion",怎么获得:
adb shell getprop ro.build.version.release
14
deviceName:怎么获得:adb devices
这里的包名appPackage和页面名appActivity怎么获得:
执行> adb logcat>D:/log.txt (log.txt的路径需要根据自己的设置)
我实际用的是mac:adb logcat>/Users/yang/Desktop/test/2.docx
如果你电脑连接了两个或以上的模拟器,你需要指定模拟器设备名,来下载你指定的模拟器App包
命令:
adb -s <设备名> logcat
这里指定一台模拟器,将app log下载到本地
3, 胡乱的对APP做一些操作。
4, Ctrl+c 结束adb命令。
5, 打开log.txt文件,搜索:Displayed
这里我们就获取到了想要的appPackage和appActivity
appPackage: com.tencent.android.qqdownloader
appActivity:com.tencent.assistant.activity.SplashImplActivity
原文链接:https://blog.csdn.net/mtbaby/article/details/78676477
接下来:start seesion 报错两个
这里我是小米真机调试:
USB安装
报错信息:
java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS
小米:在开发者选项里,把“USB调试(安全设置)"打开即可。 允许USB调试修改权限或模拟点击
接着:USB安装也要打开,允许通过USB安装应用,这两个报错就都没了。
【手机上会自动安装Appium Settings 应用(安装好不要卸载)】
点击Start Session后,会自动安装依赖应用,并打开测试APP。
界面如下:
- 左侧是应用程序的屏幕截图(快照视图)。
- 中间是应用程序的层次结构,表示为XML。
- 右侧是元素信息视图
- 查看应用程序的屏幕布局和元素层次结构。
- 识别和选择屏幕上的元素,例如按钮、文本框、菜单等。
- 获取元素的属性和文本内容。
- 模拟用户操作,例如点击、滑动、输入文本等。
- 检查应用程序的状态和断言结果。
基本操作:
1. 刷新
当我们在手机上对APP进行操作后,Inspector窗口的屏幕截图不会自动更新,需要我们通过点击刷新按钮,更新应用的最新页面
2. 操作回退
当我们想要查看返回上一个操作查看页面信息,可以通过点击back 按钮。此时Inspector窗口和手机都会同时回到上一个操作的界面。(等同于android手机上的返回键)
3. 退出
当我们不再需要使用Inspector,就可以点击x关闭Inspector窗口(调用驱动程序)。退出并关闭Inspector
5. 查看元素信息
当我们想要查看某一个元素的详细信息,首先需要点击select Elements 按钮,然后在屏幕截图中点击要查看的元素,最后在右侧的区域就可以看到元素的xpath,index,package,class,text,resource-id 等信息。
这里我点击”团购“的图标:
6. 点击元素
选择一个元素后,可以“点击”元素,当使用一个元素执行Tap操作时,Inspector将发送命令到Appium,执行点击操作。如果操作成功,左侧将生成一个新的屏幕截图,应用程序更新到最新的状态和XML。如果不成功,将看到错误消息。
定位到搜索元素
点击 Tap 按钮
这里我定位到输入框,点击tap就出现这个fail
我这里报错了:对于输入框就报错,对于可点击的图片就可以正常TAP
7. 输入文本
在上述的搜索输入框中输入“高考”
点击发送Send Keys
我这里也报错了,未解决:
8. 清空文本
定位到搜索输入框,点击清空 Clear
我这里也报错了,未解决:
9. 查找元素信息
通过元素的某一个属性值来查看它所对应的元素有哪些,可以点击search for element 按钮。
步骤:
选择一个属性:id(resource-id),name(text),xpath,className(class)等
输入属性对应的值
点击Search
显示搜索结果
10. Inspector窗口操作界面
点击 Tap/Swipe By Coordinates按钮,我们就不需要在手机上点击操作,可以直接在屏幕截图上使用鼠标来点击元素,手机也会同步操作。
11. 滑动屏幕
如果想在Inspector窗口的屏幕截图中执行一个滑动屏幕的操作,使用鼠标无法完成,那么我们可以通过Tap/Swipe By Coordinates按钮实现。
步骤
先点击滑动的起始位置(会显示一个圆圈)
按住鼠标一直拖到到滑动结束的位置
松开鼠标这时候就开始执行滑动操作
12. 录制
可以录制自动化测试脚本,但录制出的脚本都是通过坐标值来操作的,实际工作中意义不大(换一台设备可能就没法执行了)。
录制步骤:
1、将窗口操作模式修改为Tap/Swipe By Coordinates。
2、上方点击Start Recording。
3、选择自动化脚本语言。
在左侧窗口进行点击操作即可录制自动化脚本。
参考:
https://blog.csdn.net/m0_64598636/article/details/136635804
相关文章:
Appium的学习总结-Inspector参数设置和界面使用(5)
环境搭建好后,怎么使用呢? 环境这里使用的是: Appium的Server端GUI 22版本 Inspector需要单独下载安装,GUI里并没有集成。 (使用Appium v1.22.0,查看元素信息需要另外安装下载Appium Inspector) 操作&…...
多孔介质电化学:原理、应用与展望
引言 多孔介质广泛存在于自然界与人工材料体系中,从土壤、岩石到电池电极、催化剂载体等。多孔介质电化学作为一门交叉学科,融合了电化学与多孔介质理论,聚焦于电流在充满电解液的多孔介质内的传输规律以及电化学反应在复杂多孔结构中的发生…...
使用Prometheus监控systemd服务并可视化
实训背景 你是一家企业的运维工程师,需将服务器的systemd服务监控集成到Prometheus,并通过Grafana展示实时数据。需求如下: 数据采集:监控所有systemd服务的状态(运行/停止)、资源占用(CPU、内…...
网络游戏服务器如何构建全方位防御体系?DDoS与CC攻击实战防护指南
一、DDoS与CC攻击:游戏服务器的两大“隐形杀手” DDoS攻击:通过僵尸网络发起海量流量冲击,常见形式包括SYN Flood(占满连接队列)、UDP Flood(耗尽带宽)、DNS放大攻击(小查询引发大流…...
geoserver搭建Docker一键直接安装并上传tif影像预览
geoserver搭建Docker一键直接安装 文章目录 geoserver搭建Docker一键直接安装前言一、Docker拉取Geoserver二、运行后使用geoserver进行数据管理进入geoserver调整语言登录geoserver上传一个tif影像建立工作空间并上传自己的tif数据建立图层预览 总结 前言 使用docker安装geos…...
ragflow本地部署(WSL下Ubuntu)
本地docker及 docker-compose版本 安装参考: 实践笔记-docker安装及配置镜像源实践笔记-docker-compose安装 1.下载源码 git clone https://github.com/infiniflow/ragflow.git2.运行docker-compose拉取镜像 cd ragflow/docker docker-compose up -d3.启动报错…...
面试题ing
1、js中set和map的作用和区别? 在 JavaScript 中,Set 和 Map 是两种非常重要的集合类型 1、Set 是一种集合数据结构,用于存储唯一值。它类似于数组,但成员的值都是唯一的,没有重复的值。Set 中的值只能是唯一的,任何…...
我的NISP二级之路-02
目录 一.数据库 二.TCP/IP协议 分层结构 三.STRIDE模型 四.检查评估与自评估 检查评估 自评估 五.信息安全应急响应过程 六.系统工程 七.SSE-CMM 八.CC标准 九.九项重点工作 记背: 一.数据库 关于数据库恢复技术,下列说法不正确的是:…...
私有云平台总体建设方案
一、总体规划 二、项目建设...
前端使用正则表达式提取经纬度 度分秒值
经纬度:1240′0.0″,我想提取度分秒 const regex /(\d\.\d)\s*(\d\.\d)′\s*(\d\.\d)″/; const latMatches record.latDegreeMinuteSecond.match(regex); if (latMatches) {record.latDegree latMatches[1]; // 提取度record.latMinute latMatches[…...
如何在 Windows 11 上查找计算机的 IP 地址?
原文:如何在 Windows 11 上查找计算机的 IP 地址? | w3cschool笔记 在开始之前,我们先来了解一下什么是 IP 地址: 假设你住在一栋公寓楼里,快递员需要把包裹送到你家。为了确保快递能准确送到,你需要提供…...
JavaEE vs JavaSE:Java开发的两大世界深度解析
JavaEE vs JavaSE:Java开发的两大世界深度解析 🌐☕ 前言:Java世界的双子星座 作为一名Java开发者,你是否曾经困惑过JavaSE和JavaEE的区别?是否在选择学习路径时感到迷茫?别担心!今天我们将彻…...
[环境配置] 2. 依赖库安装
依赖库安装 本文档详细介绍深度学习项目所需的核心依赖库安装过程,包括 CUDA、PyTorch 等组件的安装和配置。 CUDA和cuDNN安装 CUDA安装 检查显卡是否支持CUDA: 访问NVIDIA官网查看支持列表使用命令 nvidia-smi 查看显卡信息 下载安装CUDA Toolkit&a…...
No module named ‘keras.api._v2‘
No module named keras.api._v2 解解方法,同: No module named ‘keras.engine‘-CSDN博客...
线性方程组的解法
文章目录 线性方程组的解法认识一些基本的矩阵函数MATLAB 实现机电工程学院教学函数构造1.高斯消元法2.列主元消去法3. L U LU LU分解法 线性方程组的解法 看到以下线性方程组的一般形式:设有以下的 n n n阶线性方程组: A x b \mathbf{Ax}\mathbf{b} A…...
OpenHarmony-5.0.0-Risc-V架构搭建DeepSeek-R1
OpenHarmony-5.0.0-Risc-V架构搭建DeepSeek-R1 参考laval社区的文章:OpenHarmony带你玩转DeepSeekR1大模型 文章目录 OpenHarmony-5.0.0-Risc-V架构搭建DeepSeek-R1前言一、前期准备二、获取源码1.错误示范2.下载 三、编译llama.cpp1.生成makefile2.编译 四、模型文…...
Elixir语言的函数定义
Elixir语言的函数定义 Elixir是一种基于Erlang虚拟机(BEAM)的函数式编程语言,因其并发特性及可扩展性而受到广泛欢迎。在Elixir中,函数是程序的基本构建块,了解如何定义和使用函数对于掌握这门语言至关重要。本文将深…...
Spring MVC 数据绑定教程
一、数据绑定概述 将HTTP请求中的表单数据自动映射到Controller方法的参数中,支持多种数据类型绑定。 二、自动绑定数据类型 2.1 基本数据类型绑定 支持类型 基本类型:int, double 等包装类:Integer, Double 等String 类型 实现步骤 创…...
可发1区的超级创新思路(python 实现):基于时空解耦和对比学习的可解释性模型
首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 目录 首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、应用领域 二、模型解析 1.1 创新点深度解读 (1) 双路空间解耦架构(双路编码器…...
一个简单的php加密的理解
前言 原帖子 https://www.52pojie.cn/thread-1991616-1-1.html 一段简单的 php 代码加密,大佬使用了一段 python 代码给解密出来了,但是我没太理解整个逻辑 于是在本地跑了一遍,尝试理解整个解密流程,这里记录下整个学习过程 …...
基于微信小程序的高校寝室快修小程序研究
标题:基于微信小程序的高校寝室快修小程序研究 内容:1.摘要 随着高校规模的不断扩大,学生寝室数量增多,寝室设施维修需求日益增长。传统的维修报修方式效率低下,易出现信息传递不及时等问题。本文旨在研究基于微信小程序的高校寝室快修小程序…...
windows11在连接第二屏幕之后没有声音问题
博主在使用HDMI线连接第二个屏幕之后发现没有声音了。经过翻阅资料总结以下几个步骤。 1、拔开HDMI线,观察是否有声音,如果有声音就是HDMI线插上之后的声音输出设备选择问题。 观察下图: 声音输出设备:1、电脑麦克风࿰…...
手撕Tomcat
后端开发进阶:Web APP -> Web 服务器 Jerrymouse Server设计目标如下: 1、支持Servlet 6的大部分功能: 支持Servlet组件; 支持Filter组件; 支持Listener组件; 支持Sesssion(仅限Cookie模式&a…...
oracle 快速创建表结构
在 Oracle 中快速创建表结构(仅复制表结构,不复制数据)可以通过以下方法实现,适用于需要快速复制表定义或生成空表的场景 1. 使用 CREATE TABLE AS SELECT (CTAS) 方法 -- 复制源表的全部列和数据类型,但不复制数据 C…...
InnoDB存储引擎的三大特性
InnoDB存储引擎的三大特性 Buffer Pool 原理:Buffer Poo 是InnoDB存储引擎用于缓存数据页和索引页的内存区域。他提高了数据库的读写性能,因为数据也和索引页在内存中读写比磁盘上快得多。需要访问数据时,InnoDB会在Buffer Pool 中查找&…...
算法初识-时间复杂度空间复杂度
注:观看Adbul Bari算法视频 算法概念 算法:先验分析,不依托于硬件,无语言限制,逻辑。 程序:后验测试,依托硬件,语言限制,实现。 特点: 输入-0或多个输出-至…...
MySQL8.0.40编译安装(Mysql8.0.40 Compilation and Installation)
MySQL8.0.40编译安装 近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号࿰…...
一个简单的跨平台Python GUI自动化 AutoPy
象一下,你坐在电脑前,手指轻轻一点,鼠标自己动了起来,键盘仿佛被无形的手操控,屏幕上的任务自动完成——这一切不需要你费力,只靠几行代码就能实现。这就是AutoPy的魅力,一个简单却强大的跨平台…...
C++中常见函数
目录 stringstream ss(line); 为什么使用 stringstream while(ss>>num){} arr.push_back(num); numeric_limits ::min() pair result throw invalid_argument(""); vector arr;和int arr[];有什么区别? 数据结构的本质 内存管理 功能与易用…...
C++: 类型转换
C: 类型转换 (一)C语言中的类型转换volatile关键字 修饰const变量 (二)C四种强制类型转换1. static_cast2. reinterpret_cast3. const_cast4. dynamic_cast总结 (三)RTTI (一)C语言中的类型转换 在C语言中…...
Linux驱动开发进阶(五)- 系统调用
文章目录 1、前言2、阻塞与非阻塞IO2.1、阻塞方式2.2、非阻塞方式2.3、小结 3、异步IO3.1、poll3.2、select3.3、epoll3.4、poll和epoll示例比较3.5、异步通知 4、unlocked_ioctl5、sysfs_notify 1、前言 学习参考书籍以及本文涉及的示例程序:李山文的《Linux驱动开…...
深度解析:文件或目录损坏且无法读取的应对之道
引言 在数字化办公与数据存储日益普及的今天,我们时常会遭遇各种数据问题,其中“文件或目录损坏且无法读取”这一状况尤为令人头疼。无论是个人用户存储在电脑硬盘、移动硬盘、U盘等设备中的重要文档、照片、视频,还是企业服务器上的关键业务…...
农业股龙头公司有哪些?
农业股票的龙头公司通常是指在农业领域具有较高市场份额、较强品牌影响力和较好财务表现的企业。以下是一些国内外知名的农业龙头公司: 国内农业龙头公司 中国中化 - 作为国内最大的化肥生产企业之一,主要从事化肥、种子、农药等产品的生产和销售。丰乐…...
【正点原子】如何设置 ATK-DLMP135 开发板 eth0 的开机默认 IP 地址
开机就想让 eth0 乖乖用静态 IP?别再被 DHCP 抢走地址了! 三步教你彻底掌控 ATK-DLMP135 的网络启动配置,简单粗暴,实测有效! 正点原子STM32MP135开发板Linux核心板嵌入式ARM双千兆以太网CAN 1. 删除 dhcpcd 自动获取…...
pyenv-virtualenv(python 版本管理工具)
推荐参考(本人实测有用) 参考文章pyenv 和 pyenv-virtualenv 的安装、配置和使用(仅供参考) 参考文章 pyenvpyenv-virtualenv(仅供参考) pyenv (windows)安装 手动安装 git clone https://github.com/pye…...
Solr admin 更新文档
<add><doc><field name"id">1904451090351546368</field><field name"companyName" update"set">测试科技有限公司</field></doc> </add>...
华为交换机上配置流量策略根据IP限速
一、配置ACL匹配目标IP 目的:通过ACL识别需要限速的IP地址或网段。 # 进入系统视图 system-view # 创建基本ACL(例如ACL 3000) acl 3000 rule 5 permit ip source 192.168.1.10 0 # 匹配单个IP(源地址) # 或匹配…...
3D数据共享标准——GLB文件格式揭秘
GLB 文件格式:跨平台 3D 数据共享的标准 简介 在这个数据爆炸的时代,3D 数据因其直观、逼真的特点而得到广泛应用。然而,不同 3D 软件和平台之间的兼容性一直是一个难题。 为了解决这一问题,GLB 文件格式应运而生。作为一种标准…...
Java 大视界 -- 基于 Java 的大数据隐私保护在金融客户信息管理中的实践与挑战(178)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
基于springboot体育俱乐部预约管理系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,线上管理系统展现了其蓬勃生命力和广阔的前景。与此同时,在科…...
【HTML-CSS】
一、概念 1、HTML 2、CSS 二、入门 HTML 教程 | 菜鸟教程 1、构架 注: 1、标签不区分大小写 2、属性可以使用单引号,也可以使用双引号 3、语法结构不严谨,但建议好好写 2、常见标签和样式 (1)标题 <span>没…...
UI自动化基础(1)
1、pip install selenium4.3.0,最好指定版本安装,因为不同的版本可能会有一些兼容 性的问题。 2、pip uninstall urllib3 ,pip install urllib31.26.15 【执行版本安装】,goole是114.版本 3、装好浏览器,正确安装。最好…...
看雪 get_pwn3(2016 CCTF 中的 pwn3)
get_pwn3(2016 CCTF 中的 pwn3) 格式化字符串漏洞 get_pwn3(2016 CCTF 中的 pwn3) (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file pwn3 pwn3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, …...
JAVA类和对象
实验目的: 1.掌握 Java 语言中类的定义、对象的创建、对象引用方法。 2.初步了解面向对象设计方法。 第一题: 设计一个自动铅笔类 AutoPencil,有 1 个属性 boolean penPoint(笔尖是否伸出),有 4 个函数&a…...
c#程序结构
C# 程序结构 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration)一个 classClass 方法Class 属性一个 Main 方法语句(Statements)& 表达式(Expressions)注释 C# 文件的…...
988主材订购单
每一个大项,都可以添加多行小项, 小项里的品牌,型号规格,单位都是下来框,数据是后台传过来的。是一个多维数组。 <view style"width: 150rpx;color:#000;position:relative">备注:</vie…...
elementui table禁用全选,一次限制勾选一项。
1、设置属性:selection-change“handleSelectionChange” <el-table:data"taskList"ref"tableDataRefs"selection-change"handleSelectionChange":header-cell-class-name"hideAllCheckbox">function handleSelecti…...
Invalid Executable The executable contains bitcode
xcode 升级到16之后项目运行调试都没有问题,但是最后在上传到appstore的时候出现问题了 比如这种类似的错误,网上查了一下解决方法 解决方案: 执行一下指令删除该framework的bitcode xcrun bitcode_strip ${framework_path} -r -o ${framewo…...
【天梯赛】L2_005 集合相似度(C++)
L2-005 集合相似度 - 团体程序设计天梯赛-练习集 代码实现(C) #include <iostream> #include <vector> #include <unordered_set> #include <iomanip>// 计算两个集合的相似度 double cal(const std::unordered_set<int>…...
Java【多线程】(7)常见的锁策略
目录 1.前言 2.正文 2.1悲观锁和乐观锁 2.2重量级锁和轻量级锁 2.3挂起等待锁和自旋锁 2.4互斥锁与读写锁 2.5可重入锁与不可重入锁 2.6公平锁与不公平锁 2.7synchronized优化 2.7.1锁升级 2.7.2锁消除 2.7.3锁粗化 3.小结 1.前言 哈喽大家好,今天来给…...