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

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

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

    相关文章

    I/O进程3

    day3 五、进程 7.函数接口 7.1创建子进程 pid_t fork(void);功能&#xff1a;创建子进程返回值&#xff1a;成功&#xff1a;在父进程中&#xff1a;返回子进程的进程号 >0 在子进程中&#xff1a;返回值为0&#xff1b; 失败&#xff1a;-1并设置errno 特点 1.子进程几乎…

    k8s 1.24.17版本部署(使用Flannel插件)

    1.k8s集群环境准备 推荐阅读: https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 1.1 环境准备 环境准备:硬件配置: 2core 4GB磁盘: 50GB操作系统: Ubuntu 22.04.04 LTSIP和主机名:10.0.0.231 master23110.0.0.232 worker23210.0…

    网络编程—TCP/IP模型(UDP协议与自定义协议)

    上篇文章&#xff1a; 网络编程—Socket套接字&#xff08;TCP&#xff09;https://blog.csdn.net/sniper_fandc/article/details/146923783?fromshareblogdetail&sharetypeblogdetail&sharerId146923783&sharereferPC&sharesourcesniper_fandc&sharefro…

    GNSS有源天线和无源天线

    区别 需要外部供电的就是有源天线&#xff0c;不需要外部供电的是无源天线。 无源天线 一般就是一个陶瓷片、金属片等&#xff0c;结构简单&#xff0c;成本低廉&#xff0c;占用空间及体积小&#xff0c;适合于强调紧凑型空间的导航类产品。 不需要供电&#xff0c;跟设备直…

    网络编程—TCP/IP模型(IP协议)

    上篇文章&#xff1a; 网络编程—TCP/IP模型&#xff08;TCP协议&#xff09;https://blog.csdn.net/sniper_fandc/article/details/147011479?fromshareblogdetail&sharetypeblogdetail&sharerId147011479&sharereferPC&sharesourcesniper_fandc&sharef…

    基于金字塔视觉变换的类引导网络高分辨率遥感图像高效语义分割

    Class-Guidance Network Based on the Pyramid Vision Transformer for Efficient Semantic Segmentation of High-Resolution Remote Sensing Images 摘要 多分类语义分割中类之间的小差异和类内的大变化是全卷积神经网络的“编码器-解码器”结构没有完全解决的问题&#…

    基于人工智能的高中教育评价体系重构研究

    基于人工智能的高中教育评价体系重构研究 一、引言 1.1 研究背景 在科技飞速发展的当下&#xff0c;人工智能技术已广泛渗透至各个领域&#xff0c;教育领域亦不例外。人工智能凭借其强大的数据处理能力、智能分析能力和个性化服务能力&#xff0c;为教育评价体系的创新与发…

    DeepSeek在互联网技术中的革命性应用:从算法优化到系统架构

    引言:AI技术重塑互联网格局 在当今快速发展的互联网时代,人工智能技术正以前所未有的速度改变着我们的数字生活。DeepSeek作为前沿的AI技术代表,正在多个互联网技术领域展现出强大的应用潜力。本文将深入探讨DeepSeek在搜索引擎优化、推荐系统、自然语言处理以及分布式系统…

    数字游戏(继Day 10)

    主体: #include<stdio.h> #include<time.h> #include<stdlib.h>#include"mygetch.h"#define MAX 51 //定义测试字母的最大长度void help() {printf("\n****************************************");printf("\n*输入过程中无法退出…

    谈谈模板方法模式,模板方法模式的应用场景是什么?

    一、模式核心理解 模板方法模式是一种​​行为设计模式​​&#xff0c;通过定义算法骨架并允许子类重写特定步骤来实现代码复用。 如同建筑图纸规定房屋结构&#xff0c;具体装修由业主决定&#xff0c;该模式适用于​​固定流程中需要灵活扩展​​的场景。 // 基础请求处理…

    2024 Jiangsu Collegiate Programming Contest H

    记录一下为数不多的网络流 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #include <execution> using namespace std; using i64 long long; using i128 __int128;template <typename T>struct MCFgraph{struct …

    Hadoop序列化与反序列化

    一、Hadoop序列化概述 &#xff08;一&#xff09;什么是序列化和反序列化 序列化&#xff1a;序列化是将对象&#xff08;如Java中的类实例&#xff09;转换为字节序列的过程。在Hadoop中&#xff0c;数据在分布式系统中传输或者存储到磁盘时&#xff0c;需要将数据对象序列…

    FreeRTOS临界区

    在FreeRTOS中&#xff0c;临界区通过关闭可管理的中断来保护共享资源&#xff0c;具体关闭的中断层级由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定义决定。以下是关键点解析&#xff1a; 中断优先级分类&#xff1a; 高优先级中断&#xff1a;数值低于configMAX_SYSCALL_INTERR…

    cdw2: TypeScript

    一、javascript的问题 二、初识typescript https://mp.weixin.qq.com/s/wnL1l-ERjTDykWM76l4Ajw 三、类型 二进制&#xff1a;ob开头&#xff0c;八进制&#xff1a;0o开头&#xff0c;十六进制&#xff1a;0x开头 开发中不这样写 这样写 匿名函数的参数最好不要…

    Qt中的元对象系统

    Qt的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。 元对象系统基于以下三个方面&#xff1a; (1).QObject类&#xff1a;为可以利用元对象系统的对象提供了基类。 (2).Q_OBJECT宏&#xff1a;用于启用元对象功能&#xff0c;…

    深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

    在前端开发中&#xff0c;CSS 动画是提升用户体验的重要手段&#xff0c;但很多开发者在使用动画时并不了解浏览器背后的渲染机制&#xff0c;导致动画卡顿甚至影响整体性能。本文将带你深入理解 CSS 中的两大核心概念 —— 重排&#xff08;Reflow&#xff09; 与 重绘&#x…

    <贪心算法>

    前言&#xff1a;在主包还没有接触算法的时候&#xff0c;就常听人提起“贪心”&#xff0c;当时是layman&#xff0c;根本不知道说的是什么&#xff0c;以为很难呢&#xff0c;但去了解一下&#xff0c;发现也不过如此嘛&#xff08;bushi)&#xff0c;还以为是什么高级东西呢…

    大模型快速 ASGI 服务器uvicorn

    基础概念类 1. 什么是 Uvicorn&#xff0c;它的作用是什么&#xff1f; 答案&#xff1a;Uvicorn 是一个基于 Python 的快速 ASGI&#xff08;异步服务器网关接口&#xff09;服务器。它的主要作用是作为 Web 应用程序的服务器&#xff0c;负责接收客户端的请求&#xff0c;并…

    2025高频面试算法总结篇【二叉树】

    文章目录 直接刷题链接直达非递归实现求二叉树的深度非递归从左至右打印一颗二叉树中的所有路径判断平衡二叉树二叉搜索树中第K小的元素二叉树的完全性检验根据前&中序遍历结果重建二叉树二叉树的最近公共祖先二叉树的直径二叉树的遍历 直接刷题链接直达 非递归实现求二叉…

    redis 和 MongoDB都可以存储键值对,并且值可以是复杂json,用完整例子分别展示说明两者在存储json键值对上的使用对比

    Redis 存储 JSON 键值对示例 存储操作&#xff1a; // 存储用户信息&#xff08;键&#xff1a;user:1001&#xff0c;值&#xff1a;JSON对象&#xff09; SET user:1001 {"name":"Alice", "age":30, "address":"New York&quo…