Auto.js Pro获取QQ附近的人资料页用户昵称

前言

写QQ附近的人引流脚本的时候,需要判断当前用户是否已经操作过。如果操作过,就跳过该用户。
在用户列表页取名字不太好取。于是就在用户资料页取用户昵称。


接下来查看用户昵称的节点信息,发现id和text都是空的。


下面生成代码,看看是什么样的

这是生成的代码。发现里面有个text("无名小卒"),说明昵称文本是可以取到的,只不过层次在下面,无法直接查看。

id("name").className("android.widget.TextView").text("无名小卒").findOne().parent()

下面是测试过写好的代码:

log(APP_取用户昵称())

function APP_取用户昵称() {
    // 判斷是否在用戶資料頁
 waitForActivity("com.tencent.mobileqq.nearby.profilecard.NearbyPeopleProfileActivity");  //等待页面出现
    if (text("资料").exists() && text("动态").exists()) {  //判断是否存在指定节点
        var object = id("name").depth(10).className("TextView")
        if (object.exists()) {
            return object.findOne().text()
        };
    } else {
        // log(getNowFormatDate() + "当前不在用户资料页")
    };
    return "";
};

写完以后,觉得大功告成。谁知道换了一个用户测试,就出问题了。
取出来的竟然不是用户名。
接下来重新写一段测试代码:

var object = id("name").depth(10).className("TextView").find();
log(object.size())
if (!object.empty()) {
    toast("找到啦");
    object.forEach(function(currentValue, index) {
        // log(index)
        log(currentValue.text())
    })

} else {
    toast("没找到╭(╯^╰)╮");
}

来看看调试的日志:

11:19:56.239/V: 开始运行[[remote]test.js]
11:19:56.447/D: 3
11:19:56.449/D: 直播等级 22 级
11:19:56.452/D: 她的动态还在酝酿中
11:19:56.454/D: 丢丢有点饿🍬
11:19:56.456/V: 
------------
[[remote]test.js]运行结束,用时0.215000秒

从结果看,查找到了3个结果。其中只有最后一个是我们想要的用户昵称。
又换了几个用户分别测试,发现结果有时候是1个,有时候是2个,有时候是3个。用户昵称总是最后一个。所以要对取出来的内容进行过滤。接下来修改代码。

var object = id("name").depth(10).className("TextView").find();
log(object.size())
if (!object.empty()) {
    toast("找到啦");
    object.forEach(function (currentValue, index) {
        // log(index)
        // 筛选结果
        if (index == object.size() - 1) {
            log(currentValue.text())
        };
    })

} else {
    toast("没找到╭(╯^╰)╮");
};

来看看4个用户的测试日志:

[[remote]test.js]运行结束,用时0.202000秒
11:25:36.366/V: 开始运行[[remote]test.js]
11:25:36.576/D: 3
11:25:36.578/D: 丢丢有点饿🍬
11:25:36.580/V: 
------------
[[remote]test.js]运行结束,用时0.212000秒
11:25:43.811/V: 开始运行[[remote]test.js]
11:25:44.020/D: 1
11:25:44.023/D: 无名小卒
11:25:44.025/V: 
------------
[[remote]test.js]运行结束,用时0.213000秒
11:25:53.742/V: 开始运行[[remote]test.js]
11:25:53.939/D: 3
11:25:53.942/D: 勿忘心安
11:25:53.944/V: 
------------
[[remote]test.js]运行结束,用时0.200000秒
11:26:01.068/V: 开始运行[[remote]test.js]
11:26:01.300/D: 2
11:26:01.317/D: 贫困户小百度
11:26:01.319/V: 
------------
[[remote]test.js]运行结束,用时0.250000秒

这次应该没什么问题了。
接下来将代码封装成一个公共函数。大功告成。
文章右侧可以下载代码。

开发环境与工具

QQ版本:安卓8.0.7.4085
开发IDE:Visual Studio Code1.3.5.1
Auto.js:Pro 7.0.3-7
终端设备1:红米NOTE5A高配版
终端设备1分辨率:720X1280像素
终端设备1安卓版本:7.1.2
终端设备2:红米NOTE7
终端设备2分辨率:1080X2340像素
终端设备2安卓版本:9

开发文档

UI选择器

相关教程

Auto.js Pro操作QQ附近的人列表时,判断能否关注私信
Auto.js Pro安卓全分辨率免ROOT引流脚本开发教程