用autojs写一个找到最后一个fullId("tt.lt.tt:id/msg_body_tv"),并且把这个里面的text内容输出到变量q的代码
时间: 2024-03-14 08:44:29 浏览: 55
好的,下面是使用 `Auto.js` 实现找到最后一个fullId("tt.lt.tt:id/msg_body_tv"),并且把这个里面的text内容输出到变量q的代码:
```javascript
var msgBodies = className("android.widget.TextView").text("消息内容").find(); // 查找所有消息内容的TextView控件
var lastMsgBody = msgBodies[msgBodies.length - 1]; // 找到最后一个消息内容的TextView控件
var q = lastMsgBody.text(); // 获取最后一个消息内容的text内容并存储到变量q中
log(q); // 输出变量q的值
```
需要注意的是,上述代码中使用了 `className` 方法和 `text` 方法来查找所有消息内容的TextView控件,并使用下标访问获取最后一个消息内容的TextView控件对象,最后获取其文本内容并赋值给变量q。如果您有其他问题或需要进一步帮助,请随时告诉我。
相关问题
id("tt.lt.tt:id/msg_body_tv").find()[id("tt.lt.tt:id/msg_body_tv").find().length - 1].text() != null再去运行这个代码要怎么改进
这段代码的目的是获取最后一条消息的文本内容,如果文本内容不为空,则执行后续的操作。但是这里的判断条件可能有问题,因为即使最后一条消息的文本内容为空,它也不会等于 `null`,而是等于一个空字符串 `""`。
因此,正确的判断条件应该是:
```javascript
id("tt.lt.tt:id/msg_body_tv").find()[id("tt.lt.tt:id/msg_body_tv").find().length - 1].text() != ""
```
这样就可以正确地判断最后一条消息的文本内容是否为空了。
现在帮我写一个当id("tt.lt.tt:id/msg_body_tv").find()[id("tt.lt.tt:id/msg_body_tv").find().length - 1].text() != null就去输出你好的代码,其他条件的时候就一直执行判断直到不等于null为止,用autojs写
好的,以下是一个示例代码,可以实现你所需要的功能:
```javascript
while (true) {
var msgBody = id("tt.lt.tt:id/msg_body_tv").find()[id("tt.lt.tt:id/msg_body_tv").find().length - 1];
if (msgBody != null && msgBody.text() != "") {
log("你好");
break;
}
sleep(1000);
}
```
解释一下代码:
- `while (true)` 表示一个无限循环,只要条件不满足就会一直执行下去;
- `var msgBody = id("tt.lt.tt:id/msg_body_tv").find()[id("tt.lt.tt:id/msg_body_tv").find().length - 1];` 获取最后一条消息的元素;
- `if (msgBody != null && msgBody.text() != "")` 判断最后一条消息的元素不为空且文本内容不为空;
- `log("你好");` 如果满足条件,输出 "你好";
- `break;` 跳出循环;
- `sleep(1000);` 如果条件不满足,等待 1 秒后重新执行循环。
你可以根据需要修改输出的内容和等待的时间。
阅读全文