autojs之clickable属性为false的控件如何模拟点击

方法一: 利用父控件

1. 寻找父控件,判断父控件能否点击

以某多多的签到控件为例,如图

在这里插入图片描述

2. clickable属性为false

在这里插入图片描述

3. 这时我们寻找它的父控件,如图

在这里插入图片描述

4. 发现clickable属性为true,是可点击的,可以通过点击父控件模拟签到

在这里插入图片描述

方法二: 利用坐标实现模拟点击

1. 还是以某多多的签到控件为例,如图

在这里插入图片描述

2. clickable属性为false,可以看到bounds的值

在这里插入图片描述

3. bounds的值为(501,721,579,772),这是签到控件所在的坐标,点击此处的坐标 (click(x,y)),也可以模拟点击

提示

可以综合1,2种方法进行点击,
当直接点击父控件,并不能到目标位置点击,
当子控件位于父控件中间时,可以取得父控件bounds值坐标的一半,也就是子控件所在的坐标进行点击

方法三: 找图找色

这种方法比较适合控件都找不到的情况
游戏脚本经常使用找图找色,如图

在这里插入图片描述

可以看到这整个页面只有一个控件,那如何进行模拟点击领取按钮呢?
我们可以通过截取领取按钮图片,用autojs的找图找色,
判断我们截取的领取的这张图片,在整个图片中的位置进行点击,如图

在这里插入图片描述

可通过以下代码点击图片
/**
 * @function clickImg
 * @description 查找并点击图片
 * @param smallImgPath {string} 提前截取的小图路径
 * @param threshold {number} 图片相似度。取值范围为0~1的浮点数。默认值为0.9
 * @return {Boolean} 是否找到并点击了图片
 */
function clickImg(smallImgPath, threshold) {
  var smallImg = images.read(smallImgPath); //读取本地的领取图片
  var img = captureScreen();
  var result = findImage(img, smallImg, {
    threshold: threshold,
  }); //找到图会返回坐标 找不到返回null
  if (!result) {
    log("没找到");
    return false;
  } else {
    click(result.x, result.y);
    log("找到了");
    return true;
  }
}
clickImg("1.jpg", 0.9);

作者: 狗蛋儿

在这里插入图片描述

<think>好的,我现在需要帮用户解决如何在Auto.js中使用正则表达式查控件的问题。用户之前可能已经了解过控件的基本操作,现在想用正则表达式来更灵活地定位控件。首先,我得回忆一下Auto.js的相关文档和之前提供的引用内容。根据引用[2],Auto.js的控件操作主要是通过查控件并执行操作,而查控件的方法包括text、desc、id等属性。用户现在想用正则表达式,这意味着需要用到这些属性的正则匹配功能。Auto.js的控件选择器支持正则表达式,比如textMatches、descMatches等方法,这些可能符合用户需求。 接下来,我需要确认具体的使用方法。例如,textMatches函数接受一个正则表达式作为参数,然后匹配控件的text属性。类似地,idMatches用于id的正则匹配。需要给用户提供示例代码,比如查文本以“按钮”结尾的控件,或者id包含特定字符串的控件。然后,考虑到用户可能需要不同的匹配方式,比如部分匹配或完全匹配,需要说明正则表达式的写法。例如,^开始和$结束符号的使用,或者通配符.*的使用场景。此外,结合findOne()或find()函数来获取控件对象,并执行点击或其他操作。还要注意用户提到的控件可能不可见或clickable属性false的情况,如引用[1]所述,这时候可能需要检查布局层次,到实际可操作的控件。但用户的问题主要集中在正则表达式查,这部分可能需要重点解答。 最后,生成相关问题,帮助用户深入理解,比如多条件组合查、正则表达式性能优化等,这能引导用户进一步探索Auto.js的高级用法。</think>在Auto.js中使用正则表达式查控件,主要通过`textMatches()`、`descMatches()`或`idMatches()`等方法实现。以下是具体示例和说明: --- ### 一、正则表达式查控件示例 #### 1. 通过文本内容匹配 ```javascript // 查文本以"按钮"结尾的控件 let btn = textMatches(/.*按钮$/).findOne(); btn.click(); // 查文本包含数字的控件 let numControl = textMatches(/\d+/).findOne(); numControl.setText("123"); ``` #### 2. 通过描述(desc)匹配 ```javascript // 匹配描述以"登录"开头的控件 let loginDesc = descMatches(/^登录/).findOne(); loginDesc.longClick(); ``` #### 3. 通过ID匹配 ```javascript // 匹配ID包含"edit"的控件 let editId = idMatches(/.*edit.*/).findOne(); editId.setText("自动输入"); ``` --- ### 二、关键语法说明 1. **正则表达式格式** - 使用`/正则表达式/`包裹,例如`/.*按钮$/`表示以"按钮"结尾的任意文本。 - 支持JavaScript标准正则语法,如`\d`匹配数字、`^`开头、`$`结尾等。 2. **组合查条件** ```javascript // 同时匹配文本和描述 textMatches(/确定/).descMatches(/confirm/).findOne().click(); ``` 3. **动态正则表达式** 若需拼接变量,使用`new RegExp()`: ```javascript let keyword = "搜索"; textMatches(new RegExp(keyword)).findOne().click(); ``` --- ### 三、注意事项 1. **控件属性可见性** 若控件属性未直接显示(如动态生成),需结合`bounds()`或`hierarchy`分析布局[^1]。 2. **匹配效率优化** - 优先使用`idMatches`(ID通常唯一性更高)[^2]。 - 避免过于宽泛的正则(如`/.*/`),可能影响查速度。 3. **兼容性问题** Pro版本对部分APP(如微信)限制控件,需改用免费版或像识别方案[^3]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值