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

博客讲述了在开发QQ附近的人引流脚本时,遇到的一个问题:如何正确地从用户资料页获取昵称。作者通过检查元素节点,发现昵称文本位于深层节点。经过测试和调试,最终确定了通过过滤取出最后一个匹配项来获取正确的用户昵称。代码经过修改和测试,在不同用户上表现稳定。
摘要由CSDN通过智能技术生成

前言

写QQ附近的人引流脚本的时候,需要判断当前用户是否已经操作过。如果操作过,就跳过该用户。

在用户列表页取名字不太好取。于是就在用户资料页取用户昵称。

aca385d09bec9dba1cdd006d492ad324.gif

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

12799a45bad314fc8d3a3df4dccb8876.gif

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

这是生成的代码。发现里面有个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

开发文档

相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值