【AutoX.js】选择器 UiSelector

news2024/9/23 15:19:29

文章目录

  • 原文:https://blog.c12th.cn/archives/37.html
  • 选择器 UiSelector
    • 笔记
      • 直接分析
      • 层次分析
      • 代码分析
  • 最后

原文:https://blog.c12th.cn/archives/37.html

选择器 UiSelector

笔记

AutoX.js UiSelector

直接分析

用于简单、最直接的查找控件

  • 开启悬浮窗权限
    请添加图片描述

  • 点击 布局分析
    请添加图片描述

  • 布局范围分析
    请添加图片描述

  • 选择一个值, 查看控件信息
    请添加图片描述

  • 当前选择值的 类名
    请添加图片描述

这里在主页 演示

请添加图片描述

层次分析

用于查找多层、嵌套的控件

  • 布局层次分析
    请添加图片描述

  • 选择最外层节点, 查看控件信息
    请添加图片描述

  • 最外层节点的 类名
    请添加图片描述

这里在主页演示,可以看出在不同的页面,最外层节点的类名是一样的

请添加图片描述

代码分析

用于查找没有直接显示、嵌套较深的控件

从层次分析,得出在不同的页面,两者最外层节点的类名是一样的。
所以我们可以优先查找最外层的 类名 className(“android.widget.FrameLayout”)

var node1 = className("android.widget.FrameLayout").findOnce();
log(node1);

为了方便截图就用输出窗口了

请添加图片描述

然后我们再查找 包名 packageName(“com.tencent.mm”)

var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);

var nodeList = node1.find(packageName("com.tencent.mm"));
log(nodeList.size());

nodeList.forEach((child,index) => {
    log(child);
});

请添加图片描述

筛选常用的四种属性: textdescidclassName

属性类型
text文本
desc描述
id标识号
className类名
  • text() 属性
var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);

var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());

nodeList.forEach((child,index) => {
    // log(child);
    if(child.text()){
        log(child.text());
    }
});

请添加图片描述

  • desc() 属性
var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);

var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());

nodeList.forEach((child,index) => {
    // log(child);
    if(child.desc()){
        log(child.desc());
    }
});

请添加图片描述

  • id() 属性
var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);

var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());

nodeList.forEach((child,index) => {
    // log(child);
    if(child.id()){
        log(child.id());
    }
});

请添加图片描述

  • className() 属性
var node1 = className("android.widget.FrameLayout").findOnce();
// log(node1);

var nodeList = node1.find(packageName("com.tencent.mm"));
// log(nodeList.size());

nodeList.forEach((child,index) => {
    // log(child);
    if(child.className()){
        log(child.className());
    }
});

请添加图片描述


最后

【Autox.js】VSCode 中使用插件连接手机


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

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

相关文章

code agent-自动写代码的AI工具整理(2024)

文章目录 cursorReplit Agentgithub-copilot cursor https://www.cursor.com/ 界面类似VSCODE,集成多种先进功能的AI驱动的代码编辑器,智能代码编辑与补全、使用自然语言指令来编辑和修改代码、版本控制与代码审查、自动化测试等; Replit…

路径规划——RRT算法

路径规划——RRT算法 算法原理 RRT算法的全称是快速扩展随机树算法(Rapidly Exploring Random Tree),它的思想是选取一个初始点作为根节点,通过随机采样,增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点…

基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践

作者:计缘 LLM Chat 应用大家应该都不陌生,这类应用也逐渐称为了我们日常的得力助手,如果只是个人使用,那么目前市面上有很多方案可以快速的构建出一个LLM Chat应用,但是如果要用在企业生产级别的项目中,那…

开源软件如何保证数据安全?从一下七个方面进行分析

1、加密软件来保护 在开源软件中,数据加密和保护是保障数据安全的重要手段。开发者应该使用强加密算法的加密软件来保护敏感数据,并确保数据传输和存储的安全性。通过驱动层加密技术,对开发源代码进行强制加密处理,文件创建自动进…

Mac在Python项目中通过opencv模版匹配定位不到图片

起因 原本一行代码的事情,但是在Mac上总能出现意外,如下 box pyautogui.locateOnScreen(obsidian.png) print(box) pyautogui.moveTo(box[0],box[1])上面的代码用来定位图片在屏幕中的位置,然后移动鼠标到定位到的屏幕位置坐标。 意外…

IT管理:我与IT的故事9-数字化转型7步思考行动法

四书即论语、孟子、大学、中庸,又称四子书,为历代儒学子首要研习之书。南宋朱熹取《礼记》之大学、中庸篇,分章注释,与论语、孟子合为“四书”。 四书及其注释包涵孔子弟子及再传弟子、孟子、程子、朱熹等,其编撰时长达…

代码随想录Day 38|背包问题完结,题目322.零钱兑换、279.完全平方数、139,单词拆分数

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 动态规划part06题目题目一:322. 零钱兑换解题思路:题目二:279.完全平方数题目三:139.单词拆分数解题思路:背包问题 多重背包(…

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积…

Unity使用自定义类型作为字典Key的最佳实践与避坑指南

自定义类型作为字典Key的最佳实践与避坑指南文章首发 问题背景 首先提一下之前项目开发时遇到的一个将自定义类型作为Dictionary键的坑。 项目中,我们有两个业务类BusinessA和BusinessB,因为某个需求,我们需要将这两个类建立一个映射关系&…

游泳馆收银系统源码解析之手牌管理--SAAS本地化及未来之窗行业应用跨平台架构

一、代码 if(手牌状态 "空"){结算界面 "";未来之窗_人工智能_通用页面_尺寸(title"游泳馆",收费,500,300);}else{未来之窗_人工智能_通用页面_尺寸(title"游泳馆",退款,1200,500);} 二、阿雪技术观 拥抱开源与共享,见…

探索图论中的关键算法(Java 实现)

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩!||Day031. 最短路径算法Dijkstra算法Java 实现: Bellman-Ford算法Java 实现: 2. 最小生成树算法Prim算法Java 实现: Kruskal算法Ja…

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时&#x…

读软件设计的要素05概念的特性

1. 概念的特性 1.1. 专一性原则(specificity principle)认为概念与目的应该一一对应 1.1.1. 专一性原则已被证明是概念设计中最有用的原则之一 1.1.2. 一个概念最多只能满足一个目的 1.2. 很少有没有目的的概念 1.2.1. 如果本应隐藏的用户机制被暴露,可能会产生…

通信工程学习:什么是2ASK/BASK二进制振幅键控

2ASK/BASK:二进制振幅键控 2ASK/BASK二进制振幅键控是一种数字调制技术,其全称是二进制振幅键控(Binary Amplitude Shift Keying)。该技术通过改变载波的振幅来传递二进制数字信息,而载波的频率和相位则保持不变。以下…

RISC-V (九)抢占式多任务

主要的思想:借用定时器中断实现。设置定时器寄存器,系统自动触发定时器中断时会跳到trap handler这个函数里。借用这个函数做上下文的切换,从而实现了抢占式多任务。 定时器中断:跳到trap handler函数,同时系统自动将…

清华计算几何--凸Polygon的相交问题

凸Polygon和相交定义 本节只讨论凸Polygon的问题,不涉及凹Polygon. 相交包含了边相交和完全包含。 凸Polygon相交的两个问题 Detection(检测) 判断两个凸Polygon是否相交,至于相交部分是什么不关心. Construction(构造) 求出两个凸Polygon具体相交…

Linux_kernel移植rootfs10

一、动态更改内核 1、low level(静态修改) 【1】将led_drv.c拷贝到kernel/drivers/char/目录中 【2】修改当前目录下的Makefile文件 obj-y led_drv.o #将新添加的驱动文件加入到Makefile文件中 【3】退回kernel目录,执行make uImage …

熬夜后补救措施

人体的肝功能问题 直接体现在体态和容颜上 伤肝 三大坏行为 熬夜后补救 *补充养b族、口、、锌、硒 加强代谢 能力 (1)另外熬夜后一定要多喝水 提升身体代谢能力 (2)谷肤甘肽清肝 肝脏排毒,减轻负拒 (3)水飞前含量高点 (4)熬夜出更多油 容易长痘 需要清…

标准库标头 <filesystem> (C++17)学习之文件类型

本篇介绍filesystem文件库的文件类型API。 文件类型 is_block_file (C17) 检查给定的路径是否表示块设备 (函数) is_character_file (C17) 检查给定的路径是否表示字符设备 (函数) is_directory (C17) 检查给定的路径是否表示一个目录 (函数) is_empty (C17) 检查给定的路径是…

STM32G474之使用DAC1和DAC2测试模拟比较器

STM32G474使用DAC1和DAC2的输出作为比较器输入,测试模拟比较器,方法如下: PA1的附加功能为COMP1_INP,无需映射,直接将它配置为模拟功能,就可以使用了。 将COMP1_OUT引脚映射到PA0; 采用DAC2_OUT1输出电压给…