当前位置: 首页 > news >正文

AutoJs相关学习

一、控件点击、模拟点击

如果一个控件的 clickable=false,但它的父级控件是 clickable=true,我们可以通过 向上查找父级控件 的方式找到可点击的父级,然后执行点击操作。以下是几种实现方法:

方法 1:使用 parent() 查找可点击的父级

let submitText = text("提交").findOne(); // 找到目标控件
let clickableParent = submitText.parent().findOne(clickable(true)); // 查找可点击的父级if (clickableParent) {clickableParent.click(); // 点击父级
} else {console.log("未找到可点击的父级");
}

方法 2:使用 bounds() 计算中心点并点击

如果父级也无法点击,可以 直接计算控件位置并模拟点击:

let submitText = text("提交").findOne();
let bounds = submitText.bounds();
click(bounds.centerX(), bounds.centerY()); // 点击中心点

方法 3:使用 untilFind() 结合 parent()

let submitText = text("提交").findOne();
let clickableParent = submitText.parent().untilFind(clickable(true), 5000); // 5秒内查找if (clickableParent.length > 0) {clickableParent[0].click();
} else {console.log("未找到可点击的父级");
}

二、点击某个控件的左侧偏移位置

在 Auto.js 中,如果你需要点击某个控件的 左侧偏移位置(即控件左边一定距离的位置),可以使用 bounds() 获取控件坐标后计算偏移位置,然后用click()点击。以下是几种实现方法:

方法 1:基于 bounds() 计算偏移点击

// 找到目标控件(例如一个按钮)
let target = text("确定").findOne();
if (target) {// 获取控件的位置和大小let bounds = target.bounds();// 计算左侧偏移 50px 的坐标(x 减小,y 保持中心)let offsetX = bounds.left - 50;  // 向左偏移 50 像素let offsetY = bounds.centerY();  // Y 轴居中// 检查是否超出屏幕边界(可选)if (offsetX < 0) offsetX = 0;  // 防止点击负坐标// 执行点击click(offsetX, offsetY);console.log("已点击坐标:", offsetX, offsetY);
} else {console.log("未找到目标控件");
}

方法 2:使用 click(offsetX, offsetY) 直接偏移

如果控件本身可点击,但你想点击它的左侧区域,可以结合 click(offsetX, offsetY)

let target = id("btn_submit").findOne();
if (target) {// 点击控件左侧 30px 的位置(相对控件自身坐标)target.click( -30, 0 );  // X 向左 30px,Y 不变
}

总结

  • 优先用 bounds() + click(x,y):最灵活,适用于所有情况。
  • 控件可点击时用 target.click(offsetX, offsetY):代码更简洁。

三、多个相同控件时获取最后一个控件

  var arrAll = text("头像").find();if (arrAll.nonEmpty()) {target= arrAll.get(arrAll.size() - 1);} // 获取元素位置// var lastIconBounds = arrIcons.get(arrIcons.size() - 1).bounds();// press(lastIconBounds.left - 200, lastIconBounds.top + 50, 300);

解释:

find()方法会返回所有匹配的控件集合(类似数组)

nonEmpty()是判断集合是否非空的方法(至少有一个元素)

size()获取集合中元素的数量

get(index)通过索引获取集合中的元素,这里用size()-1获取最后一个元素

四、 findOne() 和 findOnce()

在 Auto.js 中,findOne() 和 findOnce() 都是用于查找 UI 控件的方法,但它们的工作方式有重要区别:

1. findOne()

行为特点:

会持续查找控件,直到找到匹配项或超时(默认 10 秒)

如果找不到控件,会抛出异常 UiObjectNotFoundException

  • 典型用法:
let button = text("确定").findOne(); // 默认等待最多 10 秒
button.click();
  • 适用场景:

需要确保控件一定存在时才继续执行

需要操作找到的控件(如点击、输入等)

2. findOnce()

  • 行为特点:

立即查找一次,如果没找到就返回 null

不会等待,不会抛异常

  • 典型用法:
let button = text("确定").findOnce();
if (button) {button.click();
} else {console.log("没找到按钮");
}
  • 适用场景:

只需要检查控件是否存在,不关心等待

在循环中快速检查控件状态
在这里插入图片描述

4. 代码示例对比

// 使用 findOne()(会等待)
try {let btn = text("提交").findOne(5000); // 最多等 5 秒btn.click();
} catch (e) {console.log("5秒内没找到提交按钮");
}// 使用 findOnce()(立即返回)
let btn = text("提交").findOnce();
if (btn) {btn.click();
} else {console.log("当前没找到提交按钮");
}

相关文章:

AutoJs相关学习

一、控件点击、模拟点击 如果一个控件的 clickablefalse&#xff0c;但它的父级控件是 clickabletrue&#xff0c;我们可以通过 向上查找父级控件 的方式找到可点击的父级&#xff0c;然后执行点击操作。以下是几种实现方法&#xff1a; 方法 1&#xff1a;使用 parent() 查找可…...

ISO15189认证有什么要求?ISO15189认证流程

ISO 15189 认证要求及流程详解 ISO 15189 是国际标准化组织&#xff08;ISO&#xff09;针对 医学实验室质量和能力 的认证标准&#xff0c;适用于医院检验科、第三方医学实验室、血站等机构。该认证确保实验室的技术能力和管理体系符合国际标准&#xff0c;提高检测结果的准确…...

【每天一个知识点】大模型的幻觉问题

“大模型的幻觉问题”是指大语言模型&#xff08;如GPT系列、BERT衍生模型等&#xff09;在生成内容时&#xff0c;产生不符合事实或逻辑的虚假信息&#xff0c;即所谓的“幻觉”&#xff08;hallucination&#xff09;。这在诸如问答、摘要、翻译、代码生成等任务中尤其常见。…...

光谱相机在肤质检测中的应用

光谱相机在肤质检测中具有独特优势&#xff0c;能够通过多波段光谱分析皮肤深层成分及生理状态&#xff0c;实现‌非侵入式、高精度、多维度的皮肤健康评估‌。以下是其核心应用与技术细节&#xff1a; ‌一、工作原理‌ ‌光谱反射与吸收特性‌&#xff1a; ‌血红蛋白‌&a…...

【c语言】指针和数组笔试题解析

一维数组: //数组名a如果既不单独放在sizeof()中&#xff0c;也不与&结合&#xff0c;那么就表示数组首元素的大小 //a一般表示数组首元素地址&#xff0c;只有两种情况表示整个数组&#xff0c;sizeof(arr)表示整个数组的大小&#xff0c;&arr表示数组的地址 int a[]…...

【Spring】AutoConfigureOrder与Order注解的区别与使用方式

@AutoConfigureOrder与@Order都是Spring框架中用于控制组件优先级的注解,但它们有不同的应用场景和作用范围。 一、基本区别 1. 包和位置 @Order: 位于org.springframework.core.annotation包,是Spring核心包的一部分@AutoConfigureOrder: 位于org.springframework.boot.au…...

基于SpringBoot的校园赛事直播管理系统-项目分享

基于SpringBoot的校园赛事直播管理系统-项目分享 项目介绍项目摘要管理员功能图用户功能图项目预览首页总览个人中心礼物管理主播管理 最后 项目介绍 使用者&#xff1a;管理员、用户 开发技术&#xff1a;MySQLJavaSpringBootVue 项目摘要 随着互联网和移动技术的持续进步&…...

科研小白可以做哪些准备

断更五个月啦&#xff0c;这段时间一直忙于自己的研究课题。今天给大家分享我在这段时间对科研的一些认识和积累的经验&#xff0c;希望对大家有所帮助。 一、学术研究的认识与思考 什么是科研 什么是好的研究 首先&#xff0c;就是要回答“什么是科研&#xff1f;什么是好研…...

2025.4.22学习日记 JavaScript的常用事件

在 JavaScript 里&#xff0c;事件是在文档或者浏览器窗口中发生的特定交互瞬间&#xff0c;例如点击按钮、页面加载完成等等。下面是一些常用的事件以及案例&#xff1a; 1. click 事件 当用户点击元素时触发 const button document.createElement(button); button.textCo…...

TikTok X-Gnarly纯算分享

TK核心签名校验&#xff1a;X-Bougs 比较简单 X-Gnarly已经替代了_signature参数&#xff08;不好校验数据&#xff09; 主要围绕query body ua进行加密验证 伴随着时间戳 浏览器指纹 随机值 特征值 秘钥转换 自写算法 魔改base64编码 与X-bougs 长a-Bougs流程一致。 视频…...

CentOS7 环境配置

CentOS 7 环境配置 我的基础环境&#xff1a; Windows11 CentOS版本&#xff1a;CentOS Linux release 7.7.1908 (Core) Vmware版本&#xff1a;VMware Workstation 17 Pro 17.5.0 build-22583795 使用工具&#xff1a;MobaXterm 注意&#xff1a; 所有有关防火墙的操作都可以…...

缓存,内存,本地缓存等辨析

快速辨析缓存&#xff0c;内存&#xff0c;本地缓存&#xff0c;memcache&#xff0c;redis等 &#xff08;个人临时记录&#xff09; 缓存 泛指所有用于暂存数据以提升访问速度的技术&#xff0c;包括本地缓存、分布式缓存、CPU缓存等。核心目标是减少对慢速存储&#xff08…...

C++模板学习(进阶)

目录 一.非类型模板参数 二.模板的特化 一&#xff09;.函数模板特化 二&#xff09;.类模板特化 1.全特化 2.偏特化 三.模板分离编译 一&#xff09;.什么是分离编译 1. 问题描述 2. 模板的实例化机制 3. 分离编译的困境 二&#xff09;.解决方法 1. 头文件包含…...

【Git】fork 和 branch 的区别

在 Git 中&#xff0c;“fork” 和 “branch” 是两个不同的概念&#xff0c;它们用于不同的场景并且服务于不同的目的。理解这两者的区别对于有效地使用 Git 进行版本控制非常重要。 1. Fork&#xff08;分叉&#xff09; 定义 Fork 是指在 GitHub、GitLab 等代码托管平台上…...

STM32单片机入门学习——第45节: [13-2] 修改频主睡眠模式停止模式待机模式

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.22 STM32开发板学习——第45节: [13-2] 修改主频&睡眠模式&停止模式&待…...

Java中常见API的分类概述及示例

1. 集合框架&#xff08;java.util 包&#xff09; 核心接口与实现类 接口实现类特点示例代码ListArrayList, LinkedList有序、可重复List<String> list new ArrayList<>(); list.add("Java");SetHashSet, TreeSet无序、唯一Set<Integer> set …...

IOT项目——物联网 GPS

GeoLinker - 物联网 GPS 可视化工具 项目来源制作引导 项目来源 [视频链接] https://youtu.be/vi_cIuxDpcA?sigMaOKv681bAirQF8 想要在任何地方追踪任何东西吗&#xff1f;在本视频中&#xff0c;我们将向您展示如何使用 ESP32 和 Neo-6M GPS 模块构建 GPS 跟踪器——这是一…...

开源状态机引擎,在实战中可以放心使用

### Squirrel-Foundation 状态机开源项目介绍 **Squirrel-Foundation** 是一个轻量级、灵活、可扩展、易于使用且类型安全的 Java 状态机实现&#xff0c;适用于企业级应用。它提供了多种方式来定义状态机&#xff0c;包括注解声明和 Fluent API&#xff0c;并且支持状态转换、…...

TockOS,一种新安全软件架构的RTOS介绍

文章目录 1. TockOS介绍详细总结 2. TockOS开源项目的目录结构3. 胶囊&#xff08;Capsules&#xff09;胶囊的本质胶囊的特点胶囊的应用场景 4. 胶囊的实现模块化设计安全隔离事件驱动可复用性 1. TockOS介绍 Tock 是一款面向 Cortex-M 和 RISC-V 微控制器的安全嵌入式操作系…...

AGI大模型(12):向量检索之关键字搜索

1 检索的方式有那些 列举两种: 关键字搜索:通过用户输入的关键字来查找文本数据。语义搜索:不仅考虑关键词的匹配,还考虑词汇之间的语义关系,以提供更准确的搜索结果。2 关键字搜索 先看一个最基础的实现 安装模块 pip install redis 不会redis的去看我的redis专题 首…...

数据库MySQL学习——day1(创建表与数据类型)

文章目录 1. 创建表&#xff08;CREATE TABLE&#xff09;1.1. 创建表的基本语法&#xff1a;1.2. 示例&#xff1a;创建学生信息表 2. 数据类型2.1. 常用的数据类型&#xff1a; 3. 表约束3.1. 常见约束类型&#xff1a;3.2. 示例&#xff1a;添加约束条件3.3. 修改表添加约束…...

基于Transformer与随机森林的多变量时间序列预测

哈喽&#xff0c;我不是小upper&#xff0c;今天和大家聊聊基于Transformer与随机森林的多变量时间序列预测。 不懂Transformer的小伙伴可以看我上篇文章:一文带你彻底搞懂&#xff01;Transformer &#xff01;&#xff01;https://blog.csdn.net/qq_70350287/article/detail…...

【程序员 NLP 入门】词嵌入 - 上下文中的窗口大小是什么意思? (★小白必会版★)

&#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 希望用我的经验&#xff0c;让“程序猿”的AI学习之路走的更容易些&#xff0c;若我的经验能为你前行的道路增添一丝轻松&#xff0c;我将倍感荣幸&#xff01;共勉~ 【程序员 NLP 入门】词…...

MATLAB Coder 应用:转换 MATLAB 代码至 C/C++ | 实践步骤与问题解决

注&#xff1a;本文为 “ MATLAB 代码至 C/C 应用” 相关文章合辑。 未整理去重。 如有内容异常&#xff0c;请看原文。 MATLAB 代码转换为 C/C 代码的详细指南 随心 390 zhihu 发布于 2020-07-12 12:39 在实际项目中&#xff0c;我们常常遇到需要将 MATLAB 代码转换为 C/C …...

BLE 6.0 六大核心特性全解析

写在前面: 2025年1月15日,Bluetooth SIG发布了备受期待的 Bluetooth Core Specification 6.0。相比5.x系列,6.0在测距精度、能耗优化、扫描过滤、音频体验和协议灵活性等方面实现了重大突破。本文将以浅显易懂的语言、丰富的图示和真实案例,带你全面深入了解BLE 6.0的六大核…...

网络应用程序体系结构

本文来源 &#xff1a; 《计算机网络 自顶向下方法》 应用程序体系结构&#xff08;application architecture&#xff09;由应用程序研发者设计&#xff0c;规定了如何在各种端系统上组织该应用程序。 现代网络应用程序中使用的两种主流体系结构&#xff1a; (1)客户-服务器…...

Filename too long 错误

Filename too long 错误表明文件名超出了文件系统或版本控制系统允许的最大长度。 可能的原因 文件系统限制 不同的文件系统对文件名长度有不同的限制。例如&#xff0c;FAT32 文件名最长为 255 个字符&#xff0c;而 NTFS 虽然支持较长的文件名&#xff0c;但在某些情况下也…...

Linux学习——UDP

编程的整体框架 bind&#xff1a;绑定服务器&#xff1a;TCP地址和端口号 receivefrom()&#xff1a;阻塞等待客户端数据 sendto():指定服务器的IP地址和端口号&#xff0c;要发送的数据 无连接尽力传输&#xff0c;UDP:是不可靠传输 实时的音视频传输&#x…...

C++:继承

目录 一&#xff1a;继承的概念 1.1 继承的定义 1.2 继承方式 1.3 可见性区别 公有方式 私有方式 保护方式 1.4 一般规则 二、继承中的隐藏规则 三、基类和派生类间的转换 四、派生类的默认成员函数 实现一个不能被继承的类 继承与友元 五、继承与静态成员 六、多…...

RSGISLib:一款功能强大的GIS与RS数据处理Python工具包

今天为大家介绍的软件是RSGISLib&#xff1a;一款功能丰富的遥感与GIS数据的python库。下面&#xff0c;我们将从软件的主要功能、支持的系统、软件官网等方面对其进行简单的介绍。 RSGISLib官网网址为&#xff1a;http://rsgislib.org/&#xff0c;它提供了一个丰富的工具集&…...

Git管理

1.创建git仓库 git init 2.让文件添加到暂存区 git add. 3.给暂存区文件添加说明&#xff0c;并提交到本地仓库 git commit -m 说明 4.查看历史记录 git log /git log --oneline 查看状态&#xff1a;git status 5. 引用旧版 git reset --hard commitid 6.创建分支 …...

Java中内部类

1.静态类与非静态类是内部类的区分&#xff0c;外部类不可以被static修饰。 2.类的加载过程&#xff1a;类只有被使用才会被类加载器加载&#xff0c;加载后类的信息放在元空间&#xff08;方法区&#xff09;中。类的使用包括初始化对象、静态方法的调用。 3.静态内部类与普…...

[U-Net-Dual]DEU-Net

论文题目:DEU-Net: Dual-Encoder U-Net for Automated Skin Lesion Segmentation 中文题目:DEU-Net:用于自动皮肤病变分割的双编码器U-Net 0摘要 皮肤病的计算机辅助诊断(CAD)在很大程度上依赖于皮肤病变的自动分割,尽管由于病变在形状、大小、颜色和纹理上的多样性以及…...

【数据结构】第五弹——Stack 和 Queue

文章目录 一. 栈(Stack)1.1 概念1.2 栈的使用1.3 栈的模拟实现1.3.1 顺序表结构1.3.2 进栈 压栈1.3.3 删除栈顶元素1.3.4 获取栈顶元素1.3.5 自定义异常 1.4 栈的应用场景1.改变元素序列2. 将递归转化为循环3. 四道习题 1.5 概念分区 二. 队列(Queue)2.1 概念2.2 队列的使用2.3…...

LSTM如何解决梯度消失问题

LSTM如何解决梯度消失问题 一、传统RNN的梯度消失困境 在标准RNN中&#xff0c;隐藏状态更新公式为&#xff1a; h t tanh ⁡ ( W h h h t − 1 W x h x t b h ) h_t \tanh(W_{hh}h_{t-1} W_{xh}x_t b_h) ht​tanh(Whh​ht−1​Wxh​xt​bh​) 梯度计算通过链式法则展…...

什么是管理思维?

管理思维是指在管理活动中形成的系统性、战略性和创造性的思考方式&#xff0c;帮助个人或团队更高效地达成目标。它不仅适用于企业管理&#xff0c;也适用于个人成长、项目执行和复杂问题解决。以下是关于管理思维的核心内容&#xff1a; 一、管理思维的核心特征 1. 系统性思…...

缓存与内存;缺页中断;缓存映射:组相联

文章目录 内存&#xff08;RAM&#xff09;与缓存&#xff08;Cache&#xff09;Memory Management Unit缺页中断 多级缓存缓存替换策略缓存的映射方式 内存&#xff08;RAM&#xff09;与缓存&#xff08;Cache&#xff09; 缓存&#xff1a; CPU 内部或非常靠近的高速存储&a…...

12.5/Q1,GBD高分文章解读

文章题目&#xff1a;Global, regional, and national burdens of early onset pancreatic cancer in adolescents and adults aged 15-49 years from 1990 to 2019 based on the Global Burden of Disease Study 2019: a cross-sectional stud DOI&#xff1a;10.1097/JS9.000…...

路由交换网络专题 | 第六章 | OSPF | BGP | BGP属性 | 防环机制

目录 拓扑图 &#xff08;1&#xff09;AS 400 内部使用 OSPF 路由协议&#xff0c;使 PC2 访问 PC3 的路径优先选择 AR2-AR4-AR3。 &#xff08;2&#xff09;AS 400 内部使用 RIP 路由协议&#xff0c;使 PC2 访问 PC3 的路径优先选择 AR2-AR4-AR3。 &#xff08;3&#…...

ubuntu 安装 redis server

ubuntu 安装 redis server sudo apt update sudo apt install redis-server The following NEW packages will be installed:libhiredis0.14 libjemalloc2 liblua5.1-0 lua-bitop lua-cjson redis-server redis-toolssudo systemctl start redis-server sudo systemctl ena…...

基于 Spring Boot实现的图书管理系统

Spring Boot图书管理系统详细分析文档 1. 项目概述 本文档对基于Spring Boot实现的图书管理系统进行详细分析。该项目是一个典型的Web应用程序&#xff0c;采用了Spring Boot框架&#xff0c;结合MyBatis作为ORM工具&#xff0c;实现了图书信息的管理功能&#xff0c;包括图书…...

gradle可用的下载地址(免费)

这几天接手一个老项目&#xff0c;想找gradle老版本的&#xff0c;但一搜&#xff0c;虽然在CSDN上搜索出来一堆&#xff0c;但都是收费&#xff0c;有些甚至要几十积分(吃相有点难看了)。 我找了一个能访问的地址&#xff0c;特地分享出来&#xff0c;有需要的自取&#xff01…...

发送百度地图的定位

在vuephp写的聊天软件项目中&#xff0c;增加一个发送百度地图的定位功能 在 Vue PHP 的聊天软件中增加发送百度地图定位功能&#xff0c;需要从前端定位获取、地图API集成、后端存储到消息展示全流程实现。以下是详细步骤&#xff1a; 一、前端实现&#xff08;Vue/Uni-app…...

滑动窗口学习

2090. 半径为 k 的子数组平均值 题目 问题分析 给定一个数组 nums 和一个整数 k&#xff0c;需要构建一个新的数组 avgs&#xff0c;其中 avgs[i] 表示以 nums[i] 为中心且半径为 k 的子数组的平均值。如果在 i 前或后不足 k 个元素&#xff0c;则 avgs[i] 的值为 -1。 思路…...

python数据分析(二):Python Pandas索引技术详解

Python Pandas索引技术详解&#xff1a;从基础到多层索引 1. 引言 Pandas是Python数据分析的核心库&#xff0c;而索引技术是Pandas高效数据操作的关键。良好的索引使用可以显著提高数据查询和操作的效率。本文将系统介绍Pandas中的各种索引技术&#xff0c;包括基础索引、位…...

(15)VTK C++开发示例 --- 生成随机数的首选方法

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;VTK开发 &#x1f448; 1. 概述 vtkMinimalStandardRandomSequence 是 VTK&#xff08;Visualization Toolkit&#xff09;库中的一个类&#xff0c;…...

华为S系列交换机CPU占用率高问题排查与解决方案

问题概述 在华为S系列交换机(V100&V200版本)运行过程中&#xff0c;CPU占用率过高是一个常见问题&#xff0c;可能导致设备性能下降甚至业务中断。根据华为官方维护宝典&#xff0c;导致CPU占用率高的主要原因可分为四大类&#xff1a;网络攻击、网络震荡、网络环路和硬件…...

为啥低速MCU单板辐射测试会有200M-1Ghz的辐射信号

低速MCU&#xff08;如8位或16位单片机&#xff09;单板在辐射测试中出现 200MHz~1GHz的高频辐射信号&#xff0c;看似不合理&#xff0c;但实际上是由多种因素共同导致的。以下是详细原因分析及解决方案&#xff1a; 1.根本原因分析: (1) 时钟谐波与开关噪声 低速MCU的时钟谐…...

docker本地虚拟机配置

docker 下载安装 yum install -y docker 如果报错 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache 修改docker 仓…...

【随机过程】柯尔莫哥洛夫微分方程总结

柯尔莫哥洛夫微分方程&#xff1a;用“水流扩散”理解概率演化 1. 核心思想 柯尔莫哥洛夫微分方程&#xff08;Kolmogorov Equations&#xff09;是描述**连续时间马尔可夫过程&#xff08;CTMC&#xff09;**中概率分布随时间演化的工具。 前向方程&#xff08;Fokker-Planc…...