1 Star 1 Fork 0

tinode/LearnChinaHelper

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
AutoLearnChina.js 42.19 KB
一键复制 编辑 原始数据 按行查看 历史
F_喜欢足球 提交于 2020-03-24 23:44 . 强国助手更新至v1.0.5版本
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062
"ui";
var form = {
isLongRead: false,
isLongWatch: false
}
ui.layout(
<vertical>
<appbar>
<toolbar id="toolbar" title="强国助手 V1.0.5"/>
</appbar>
<Switch id="autoService" text="无障碍服务" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="15sp"/>
<ScrollView>
<vertical>
<frame height="40" gravity="center">
<text text="*注意*" gravity="center" textSize="18sp" textColor="red" textStyle="bold"/>
</frame>
<card w="*" h="*" margin="10 5" cardCornerRadius="2dp"
cardElevation="1dp" gravity="center_vertical">
<ScrollView>
<vertical padding="18 8" h="auto">
<text text="项目说明文档: (请留意新版本的发布)" textColor="#222222" textSize="14sp"/>
<text autoLink="web" text="https://github.com/XiangyuTang/LearnChinaHelper "/>
</vertical>
</ScrollView>
<View bg="#f44336" h="*" w="10"/>
</card>
<card w="*" h="*" margin="10 5" cardCornerRadius="2dp"
cardElevation="1dp" gravity="center_vertical">
<ScrollView>
<vertical padding="18 8" h="auto">
<text text="1.首次安装请先开启无障碍服务和截图与允许通知权限" textColor="#222222" textSize="14sp"/>
<text text="2.若未开启通知权限,首次使用建议打开↗的悬浮窗权限" textColor="#222222" textSize="14sp"/>
<text text="3.开始运行前请先关闭学习强国,由脚本运行后自动启动" textColor="#222222" textSize="14sp"/>
<text text="4.脚本执行过程中请勿操作手机" textColor="#222222" textSize="14sp"/>
</vertical>
</ScrollView>
<View bg="#f44336" h="*" w="10"/>
</card>
<card w="*" h="*" margin="10 5" cardCornerRadius="2dp"
cardElevation="1dp" gravity="center_vertical">
<ScrollView>
<vertical padding="18 8" h="auto">
<text text="当前版本强国助手支持的功能包括:(以下任务预计花费7分钟)" textColor="#222222" textSize="14sp"/>
<text text="阅读文章、视听学习、收藏、分享、订阅、评论、本地频道" textColor="#999999" textSize="14sp"/>
</vertical>
</ScrollView>
<View bg="#4caf50" h="*" w="10"/>
</card>
<card w="*" h="*" margin="10 5" cardCornerRadius="2dp"
cardElevation="1dp" gravity="center_vertical">
<ScrollView>
<vertical padding="18 8" h="auto">
<text text="坚持把学习贯彻习近平总书记系列重要讲话精神作为重大政治任务,认真学习党的先进理论与指导思想,请勿利用本软件投机取巧." textColor="#222222"/>
</vertical>
</ScrollView>
<View bg="#4caf50" h="*" w="10"/>
</card>
<card w="*" h="*" margin="10 5" cardCornerRadius="2dp"
cardElevation="1dp" gravity="center_vertical">
<ScrollView>
<vertical padding="18 8" h="auto">
<text text="是否执行文章学习时长任务:(预计最多花费12分钟)" textColor="#222222"/>
<radiogroup id="long_read">
<radio id="yes_read" text=""></radio>
<radio id="no_read" text="" checked = "true"></radio>
</radiogroup>
</vertical>
</ScrollView>
<View bg="#2196f3" h="*" w="10"/>
</card>
<card w="*" h="*" margin="10 5" cardCornerRadius="2dp"
cardElevation="1dp" gravity="center_vertical">
<ScrollView>
<vertical padding="18 8" h="auto">
<text text="是否执行视听学习时长任务:(建议在wifi环境下执行,预计最多花费18分钟)" textColor="#222222"/>
<radiogroup id="long_watch">
<radio id="yes_watch" text=""></radio>
<radio id="no_watch" text="" checked = "true"></radio>
</radiogroup>
</vertical>
</ScrollView>
<View bg="#2196f3" h="*" w="10"/>
</card>
<linear gravity="center">
<button id="start" text="开始运行" style="Widget.AppCompat.Button.Colored" w="auto"/>
<button id="stop" text="停止运行" w="auto"/>
</linear>
<frame height="20" gravity="center">
<text text="---------------------------------------------------------------------------------------------------------------------------------" gravity="center"/>
</frame>
<frame height="50" gravity="center">
<text text="Copyright©2020 by Txy 一岸流年1998" gravity="center"/>
</frame>
</vertical>
</ScrollView>
</vertical>
);
//创建选项菜单(右上角)
ui.emitter.on("create_options_menu", menu=>{
menu.add("启动悬浮窗");
menu.add("运行日志");
menu.add("关于");
});
//监听选项菜单点击
ui.emitter.on("options_item_selected", (e, item)=>{
switch(item.getTitle()){
case "启动悬浮窗":
var intent = new Intent();
intent.setAction("android.settings.action.MANAGE_OVERLAY_PERMISSION");
app.startActivity(intent);
break;
case "运行日志":
app.startActivity('console');
break;
case "关于":
alert("关于", "强国助手 v1.0.5\n1.新增悬浮窗日志显示功能\n2.解决阅读时长任务的bug\n3.新增选项菜单");
break;
}
e.consumed = true;
});
activity.setSupportActionBar(ui.toolbar);
ui.yes_read.on("check",function(check){
if(check){
form.isLongRead= true;
}
});
ui.no_read.on("check",function(check){
if(check){
form.isLongRead= false;
}
});
ui.yes_watch.on("check",function(check){
if(check){
form.isLongWatch= true;
}
});
ui.no_watch.on("check",function(check){
if(check){
form.isLongWatch= false;
}
});
ui.autoService.on("check", function(checked) {
// 用户勾选无障碍服务的选项时,跳转到页面让用户去开启
if(checked && auto.service == null) {
app.startActivity({
action: "android.settings.ACCESSIBILITY_SETTINGS"
});
}
if(!checked && auto.service != null){
auto.service.disableSelf();
}
});
// 当用户回到本界面时,resume事件会被触发
ui.emitter.on("resume", function() {
// 此时根据无障碍服务的开启情况,同步开关的状态
ui.autoService.checked = auto.service != null;
});
ui.start.on("click", function(){
//程序开始运行之前判断无障碍服务
if(auto.service == null) {
toastLog("请先开启无障碍服务!");
return;
}
main();
});
ui.stop.on("click",function(){
threads.shutDownAll();
engines.stopAll();
exit();
toast("已终止执行脚本");
});
function main() {
// 这里写脚本的主逻辑
threads.start(function () {
if(!requestScreenCapture()){
toastLog("请先开启截图权限,以执行收藏任务!");
return;
}
try {
//启动悬浮窗日志
console.show();
launchApp("学习强国");
toastLog("主程序开始运行");
waitForPackage("cn.xuexi.android");
sleep(3000);
toast("开始执行脚本!")
getTaskList(); // 获取任务列表
doUnfinishedTask(); //执行当日未完成的任务
getTaskList(); // 重新获取任务列表,装载最新的阅读和视听时长剩余次数
doExtraTask();
back();//回到手机主页
sleep(2000);
} catch (error) {
log(error)
toast("出现异常,请关闭应用重新执行脚本!");
exit(); // 有异常退出,结束脚本
}
toastLog("运行结束,脚本自动退出...");
threads.shutDownAll();
console.hide();
engines.stopAll();
exit();
});
}
var taskInfoList = []; // 装任务列表
function getTaskList() {
// 从主页到我的主页
className("android.widget.TextView").id('comm_head_xuexi_mine').findOne().click();
sleep(2000);
// 点击事件在我的积分父控件上
id("user_item_name").text("学习积分").findOne().parent().click()
// waitForPackage("cn.xuexi.android")
//waitForActivity("com.alibaba.lightapp.runtime.activity.CommonWebViewActivity")
toastLog("尝试获取任务列表...")
//等待缓冲符号消失
sleep(2000);
while(className("android.widget.ImageView").exists())
{
sleep(1000);
toastLog("等待加载...")
}
// sleep(8000);
// 获取任务列表
taskInfoList = []; // 重置
className("android.widget.ListView").findOne().children().forEach(function (child) {
var list = child.find(className('android.view.View'));
// log(list)
if (list.length > 5) {
var title = list.get(2).contentDescription;
var content = list.get(4).contentDescription;
if (title && content) {
var integralContent = content.split('/');
var getIntegral = parseInt(integralContent[0].replace(/[^0-9]/ig, ""));
var targetIntegral = parseInt(integralContent[1].replace(/[^0-9]/ig, ""));
taskInfoList.push({
title: title,
getIntegral: getIntegral,
targetIntegral: targetIntegral,
})
}
}
});
if (!taskInfoList.length) {
toastLog('网络不稳定,获取任务失败!请关闭应用并重启脚本...');
threads.shutDownAll();
engines.stopAll();
exit(); // 有异常退出,结束脚本
} else {
toastLog("成功获取任务列表,退到首页");
log(taskInfoList);
back();//从“积分”页跳转到“我的”
sleep(2000);
back();//从“我的”跳转到“首页”
sleep(2000);
}
};
function doUnfinishedTask(){
var flag = 0;//判断是否完成所有任务满分的标志
var read_article_flag = 2 //判断阅读文章任务是否已完成,作为参数传入视听学习任务的new_vedio_list用于控件寻找
for(i=0;i<taskInfoList.length;i++){
var task = taskInfoList[i];
// log(task);
//如果当日获得积分<当日上限积分
if(task.getIntegral < task.targetIntegral){
flag = 1;
// log('未达成满分的任务有:'+task.title)
if(task.title=='阅读文章'){
rest_num = task.targetIntegral-task.getIntegral;
read_article_flag = 2;
readArticle(rest_num,8,false);//默认阅读8s,执行短时阅读任务
continue;
}
else if(task.title=='视听学习'){
rest_num = task.targetIntegral-task.getIntegral;
learnVideo(rest_num,read_article_flag,8,false);//默认观看8s,执行短时视听任务
continue;
}
else if(task.title=='每日答题'){
sleep(2000)
toastLog('开始执行每日答题任务(暂未开发)')
continue;
}
else if(task.title=='每周答题'){
toastLog('开始执行每周答题任务(暂未开发)')
sleep(2000)
continue;
}
else if(task.title=='专项答题'){
toastLog('开始执行专项答题任务(暂未开发)')
sleep(2000)
continue;
}
else if(task.title=='订阅'){
rest_num = task.targetIntegral-task.getIntegral;
subscribe(rest_num);
continue;
}
else if(task.title=='分享'){
share();
continue;
}
else if(task.title=='收藏'){
collect();
continue;
}
else if(task.title=='发表观点'){
comment();
continue;
}
else if(task.title=='本地频道'){
localChannel();
continue;
}
}
}
if(!flag)
{
toastLog('已完成当日所有脚本任务!d=====( ̄▽ ̄*)b')
}
};
function doExtraTask(){
toastLog('执行额外脚本任务....')
sleep(1000);
var read_article_flag = 2;
if(form.isLongRead)
{
read_article_flag = 2;
toastLog("开始执行文章学习时长任务...")
sleep(1000);
//读rest_num篇文章,每篇文章阅读125s
for(i=0;i<taskInfoList.length;i++){
var task = taskInfoList[i];
if(task.getIntegral < task.targetIntegral&&task.title=='文章学习时长'){
rest_num = task.targetIntegral-task.getIntegral;
readArticle1(rest_num,125,true);
}
}
}
if(form.isLongWatch)
{
toastLog("开始执行视听学习时长任务...");
sleep(1000);
//看rest_num个视频,每个视频观看185s
for(i=0;i<taskInfoList.length;i++){
var task = taskInfoList[i];
if(task.getIntegral < task.targetIntegral&&task.title=='视听学习时长'){
rest_num = task.targetIntegral-task.getIntegral;
learnVideo(rest_num,read_article_flag,185,true);
}
}
}
toastLog('额外任务执行完成!d=====( ̄▽ ̄*)b')
}
/**
* @function readArticle 阅读时长任务(短时)
* @param num 待完成任务的数量。
* @param time 阅读文章的时间(s)。
* @param isLong 是否执行长时任务。
*/
function readArticle(num,time,isLong){
sleep(1000);
toastLog('开始执行阅读文章任务...')
//点击学习控件
id("home_bottom_tab_button_work").findOne().click();
sleep(1500);
//点击要闻
className("android.widget.TextView").text("要闻").findOne().parent().click();
sleep(1500);
//先看右上角总积分,如果看完某文章,积分没变,说明该文章以前看过,不算有效文章,num不减
var origin_score = id("comm_head_xuexi_score").findOne().getText();
sleep(1500);
log("origin_score:"+origin_score)
var newListView = className("android.widget.ListView").depth(20).findOnce(1);
//阅读文章
while(num>0){
newListView = className("android.widget.ListView").depth(20).findOnce(1);
log('newListView:'+newListView)
sleep(1000);
if(newListView!=null)
{
// log('newListView:'+newListView)
var newslist = newListView.children();
// log('list.length:'+newslist.length);
if (newslist.length > 0)
{
newslist.forEach(function(item,index){
if(index&&num>0){//index==0时是linearLayout控件,无法点击,也不是子项要闻
sleep(1000);
isClick = item.click()//进入新闻内容页
sleep(1500);
if(isClick)
{
num--;
toastLog("进行模拟阅读"+time+"s...剩余阅读篇数:"+num);
// waitForPackage("cn.xuexi.android");
for(var t=1;t<=time;t++)
{
sleep(1000);
left_time = time-t;
if(left_time%5==0)
{
toastLog("还剩"+left_time+"s阅读时间...");
//未防止息屏的唤醒屏幕操作
device.wakeUp();
}
}
back();
// className("android.widget.ImageView").depth(11).findOne().click();
sleep(2000);
//返回之后看积分是否变化,若未变化,num++
var new_score = id("comm_head_xuexi_score").findOne().getText();
if(new_score==origin_score)
{
if(isLong)//如果是阅读时长任务
{
num++;
toastLog("检测积分未发生变化...向下翻页并进行长时阅读");
pn = random(3,8);
for(var p=1;p<=pn;p++)//往下多滑动几次
{
newListView.scrollDown();
sleep(1000);
}
}
else
{
num++;
toastLog("检测积分未发生变化...向下翻页并重置剩余阅读篇数:"+num);
}
newListView.scrollDown();
}
else
{
origin_score = new_score;
}
}
}
});
}
newListView.scrollDown();
}
}
toastLog('阅读文章任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function readArticle1 由于控件会谜之变化的原因,无可奈何为阅读时长任务特别写的方法
* @param num 待完成任务的数量。
* @param time 阅读文章的时间(s)。
* @param isLong 是否执行长时任务。
*/
function readArticle1(num,time,isLong){
sleep(1000);
toastLog('开始执行阅读时长任务...')
//点击学习控件
id("home_bottom_tab_button_work").findOne().click();
sleep(1500);
//点击要闻
className("android.widget.TextView").text("要闻").findOne().parent().click();
//先看右上角总积分,如果看完某文章,积分没变,说明该文章以前看过,不算有效文章,num不减
var origin_score = id("comm_head_xuexi_score").findOne().getText();
log("origin_score:"+origin_score)
var newListView = className("android.widget.ListView").depth(20).findOne();
//阅读文章
//为长时阅读设定积分未变化停止机制,如果检测到积分未变化2次,停止阅读
var stop_flag = 0;
while(num>0){
if(stop_flag==2)
{
break;
}
if(newListView.bounds().right==0)//正常的listView控件范围应该是Rect(0, 357 - 1080, 2195)
{
//如果进入这个条件,说明控件找成了Rect(0, 357 - 0, 2195),是错的
log("检测到newListView控件不对,自动修改...")
listViewFlag = 1;
newListView = className("android.widget.ListView").depth(20).findOnce(1);
}
else{
newListView = className("android.widget.ListView").depth(20).findOne();
}
log('newListView:'+newListView)
if(newListView!=null)
{
// log('newListView:'+newListView)
var newslist = newListView.children();
// log('list.length:'+newslist.length);
if (newslist.length > 0)
{
newslist.forEach(function(item,index){
if(index&&num>0){//index==0时是linearLayout控件,无法点击,也不是子项要闻
sleep(2000);
isClick = item.click()//进入新闻内容页
if(isClick)
{
num--;
toastLog("进行模拟阅读"+time+"s...剩余阅读篇数:"+num);
// waitForPackage("cn.xuexi.android");
for(var t=1;t<=time;t++)
{
sleep(1000);
left_time = time-t;
if(left_time%5==0)
{
toastLog("还剩"+left_time+"s阅读时间...");
//未防止息屏的唤醒屏幕操作
device.wakeUp();
}
}
back();
// className("android.widget.ImageView").depth(11).findOne().click();
sleep(2000);
//返回之后看积分是否变化,若未变化,num++
var new_score = id("comm_head_xuexi_score").findOne().getText();
if(new_score==origin_score)
{
if(isLong)//如果是阅读时长任务
{
num++;
toastLog("检测积分未发生变化...向下翻页并进行长时阅读");
stop_flag++;
pn = random(3,8);
for(var p=1;p<=pn;p++)//往下多滑动几次
{
newListView.scrollDown();
sleep(1000);
}
}
else
{
num++;
toastLog("检测积分未发生变化...向下翻页并重置剩余阅读篇数:"+num);
}
newListView.scrollDown();
}
else
{
origin_score = new_score;
}
}
}
});
// break;
}
newListView.scrollDown();
}
}
toastLog('阅读文章任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function learnVideo 由于控件会谜之变化的原因,无可奈何为阅读时长任务特别写的方法
* @param num 待完成任务的数量。
* @param read_article_flag 主要用于判断阅读文章任务是否做过,如果做过,会影响new_vedio_list寻找控件
* @param time 阅读文章的时间(s)。
* @param isLong 是否执行长时任务。
*/
function learnVideo(num,read_article_flag,time,isLong){
log("read_article_flag:"+read_article_flag);
sleep(1000);
toastLog('开始执行视听学习任务...');
//进入电视台频道
desc("电视台").id("home_bottom_tab_button_contact").findOne().click();
//先看右上角总积分,如果看完某视频,积分没变,说明该视频以前看过,不算有效视频,num不减
var origin_score = id("comm_head_xuexi_score").findOne().getText();
log("origin_score:"+origin_score)
//进入第一频道
className("android.widget.TextView").text("第一频道").findOne().parent().click();
var new_vedio_list = className("android.widget.ListView").depth(20).findOnce(read_article_flag);
while(num>0){
new_vedio_list = className("android.widget.ListView").depth(20).findOnce(read_article_flag);
log('new_vedio_list:'+new_vedio_list)
if(new_vedio_list!=null)
{
var newslist = new_vedio_list.children();
if (newslist.length > 0)
{
newslist.forEach(function(item,index){
if(index&&num>0){//index==0时是linearLayout控件,无法点击,也不是子项要闻
sleep(1000);
isClick = item.click()//进入视频内容页
sleep(2000);
if(isClick)
{
num--;
//如果用户用的流量观看视频
if(text("继续播放").exists()){
toastLog("自动点击继续播放,将消耗用户流量...");
className("android.widget.TextView").text("继续播放").findOne().click();
sleep(1000);
}
else{
toastLog("自动播放...");
sleep(1000);
}
toastLog("进行模拟观看"+time+"s...剩余视听:"+num+"");
for(var t=1;t<=time;t++)
{
sleep(1000);
left_time = time-t;
if(left_time%5==0)
{
toastLog("还剩"+left_time+"s视听时间...");
//未防止息屏的唤醒屏幕操作
device.wakeUp();
}
}
//点击返回
// className("android.widget.ImageView").depth(13).findOne().click()
back();
sleep(2000);
//返回之后看积分是否变化,若未变化,num++
var new_score = id("comm_head_xuexi_score").findOne().getText();
if(new_score==origin_score)
{
if(isLong)//如果是视听时长任务
{
num++;
toastLog("检测积分未发生变化...向下翻页并继续进行长时视听");
pn = random(3,8);
log("pn:"+pn);
for(var p=1;p<=pn;p++)//往下多滑动几次
{
new_vedio_list.scrollDown();
sleep(1000);
}
}
else
{
num++;
toastLog("检测积分未发生变化...向下翻页并重置剩余视听次数:"+num);
}
new_vedio_list.scrollDown();
}
else
{
origin_score = new_score;
}
}
}
});
}
}
else
{
if(read_article_flag==2)
{
read_article_flag = 1;
new_vedio_list = className("android.widget.ListView").depth(20).findOnce(read_article_flag);
log("read_article_flag = 1的new_vedio_list:"+new_vedio_list)
}
else
{
read_article_flag = 2;
new_vedio_list = className("android.widget.ListView").depth(20).findOnce(read_article_flag);
log("read_article_flag = 2的new_vedio_list:"+new_vedio_list)
}
new_vedio_list.scrollDown();
}
}
toastLog('视听学习任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function collect 收藏任务
*/
function collect(){
toastLog('开始执行收藏任务');
sleep(1000);
//点击要闻
className("android.widget.TextView").text("要闻").findOne().parent().click();
sleep(1000);
//阅读文章
var newListView = className("android.widget.ListView").depth(20).findOnce(1);
// log('newListView:'+newListView)
var num = 2;//待收藏文章数
while(newListView!=null&&num>0)
{
// log('newListView:'+newListView)
var newslist = newListView.children();
// log('list.length:'+newslist.length);
if (newslist.length > 0)
{
newslist.forEach(function(item,index){
if(index>0&&num>0){//index==0时是linearLayout控件,无法点击,也不是子项要闻
sleep(2000);
isClick = item.click()//进入新闻内容页
if(isClick)
{
toastLog("检测该文章是否收藏...");
sleep(2000);
//找到小星星控件
collect_star = className("android.widget.ImageView").depth(10).findOne();
log("collect_star:"+collect_star);
//检测小星星是否点亮
//截图取小星星控件的坐标范围
var img = captureScreen();
var star_bounds = collect_star.bounds();
//获取小星星中心的x,y坐标像素
var star_x = star_bounds.centerX();
var star_y = star_bounds.centerY();
// 小星星的中心RGB(255,196,61)
var collected_color = colors.rgb(255, 196, 61)
var color = images.pixel(img, star_x, star_y);
//如果颜色不匹配,说明未收藏
if(!colors.isSimilar(color,collected_color))
{
//收藏
toastLog("收藏该文章...");
sleep(1000);
collect_star.click();
num--;
sleep(1000);
}
//返回
back();
sleep(2000);
}
}
});
}
newListView.scrollDown();
sleep(2000);
newListView = className("android.widget.ListView").depth(20).findOnce(1);
}
toastLog('收藏任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function share 分享任务
*/
function share(){
toastLog('开始执行分享任务...');
sleep(1000);
//点击要闻
className("android.widget.TextView").text("要闻").findOne().parent().click();
//阅读文章
var newListView = className("android.widget.ListView").depth(20).findOnce(1);
if(newListView!=null)
{
var newslist = newListView.children();
if (newslist.length > 0)
{
newslist.forEach(function(item,index){
if(index>0&&index<=2){//index==0时是linearLayout控件,无法点击,也不是子项要闻
sleep(2000);
isClick = item.click()//进入新闻内容页
if(isClick)
{
sleep(1000);
toastLog("正在分享该文章...");
//找到分享控件
var share_icon = className("android.widget.ImageView").depth(10).drawingOrder(4).findOne();
// log("share_icon:"+share_icon);
share_icon.click();
sleep(2000);
var share_choice = text("分享到学习强国").id("txt_gv_item").findOne().parent();
// log("share_choice:"+share_choice);
sleep(2000);
//点击分享
share_choice.click();
//停留5秒
sleep(5000);
//返回新闻主体内容界面
back();
sleep(2000);
// 返回要闻主页
back();
}
}
});
}
newListView.scrollDown();
}
toastLog('分享任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function comment 评论任务
*/
function comment(){
toastLog('开始执行发表观点任务...');
sleep(1000);
//点击要闻
className("android.widget.TextView").text("要闻").findOne().parent().click();
//阅读文章
var newListView = className("android.widget.ListView").depth(20).findOnce(1);
if(newListView!=null)
{
var newslist = newListView.children();
if (newslist.length > 0)
{
newslist.forEach(function(item,index){
if(index>0&&index<=2){//index==0时是linearLayout控件,无法点击,也不是子项要闻
sleep(2000);
isClick = item.click()//进入新闻内容页
if(isClick)
{
sleep(1000);
toastLog("正在发表观点...");
//找到Text文本框控件
var comment_icon = className("android.widget.TextView").text("欢迎发表你的观点").findOne();
// 点击发表观点
comment_icon.click();
sleep(2000);
//键入观点内容
className("android.widget.EditText").findOne().setText("中国加油!祝福祖国的未来更加繁荣昌盛!");
sleep(2000);
//点击发布
className("android.widget.TextView").text("发布").findOne().click();
toastLog("评论发布成功,等候10s回到主页...")
sleep(10000);
//回到新闻list页
back();
}
}
});
}
newListView.scrollDown();
}
toastLog('发表观点任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function localChannel 本地频道任务
*/
function localChannel(){
toastLog('开始执行本地频道任务');
sleep(1000);
//找到推荐、要闻、本地频道等的父控件
avv = className("android.view.ViewGroup").depth(14).findOnce(2);
// log(avv)
var address = ""
avv.children().forEach(function(item,index){
// log(item);
if(index==3){//找到本地频道的入口控件,并点击
address = item.child(0).getText();
log(address);
item.click();
}
});
//找到第一个本地频道入口
channel = className("android.widget.TextView").depth(26).textContains(address).findOne().parent();
// log(channel)
//点击进入
channel.click();
sleep(5000);
back();
sleep(2000);
toastLog('本地频道任务执行结束!d==( ̄▽ ̄*)b')
//点击学习控件回到新闻首页
id("home_bottom_tab_button_work").findOne().click();
sleep(1000);
};
/**
* @function dailyQuiz 每日答题任务
*/
function dailyQuiz(){
};
/**
* @function weeklyQuiz 每周答题任务
*/
function weeklyQuiz(){
};
/**
* @function specialQuiz 专项答题任务
*/
function specialQuiz(){
};
/**
* @function challengeQuiz 挑战答题任务
*/
function challengeQuiz(){
};
/**
* @function subscribe 订阅任务
*/
function subscribe(num){
sleep(1000);
toastLog('开始执行订阅任务');
// 从主页到我的主页
id("comm_head_xuexi_mine").text("我的").findOne().click();
sleep(2000);
//点击订阅控件
id("my_subscribe_tv").text("订阅").findOne().click();
// waitForActivity("android.widget.FrameLayout",200);
// log('过来了');
sleep(3000);
//在我的订阅里面找到所有订阅号,存起来
var subscribed_accounts = [];
//如果没有订阅任何订阅号,那直接点击添加
if(id("no_content_text").exists()){
//点击添加
className("android.widget.TextView").text("添加").findOne().click();
//在添加里面逐一扫描每个订阅号是否在上面的已订阅中,如果没匹配到,则订阅这个公众号,订阅num个即可
accounts_pool = className("android.widget.ListView").depth(13).findOne();
var bottom_flag = 0;
while(accounts_pool!=null&&num>0)
{
sleep(1000);
var frameLayoutList = accounts_pool.children();
frameLayoutList.forEach(function(item,index){
if(item.className()=='android.widget.FrameLayout')
{
var account_name = item.find(className("android.widget.TextView"));
if(num>0&&subscribed_accounts.indexOf(account_name[0].text())==-1)//说明数组中不存在这个元素,则订阅他
{
num--;
subscribed_accounts.push(account_name[0].text());
subscribe_icon = item.find(className("android.widget.LinearLayout"))[1];
// log("subscribe_icon:"+subscribe_icon)
toastLog("正在订阅...");
subscribe_icon.click();
sleep(2000);
}
else if(item.className()=='android.widget.LinearLayout')//遍历到底了
{
bottom_flag = 1;
return;
}
}
});
if(bottom_flag)
{
toastLog("强国号都已经订阅完啦...");
break;
}
accounts_pool.scrollDown();
sleep(2000);
accounts_pool = className("android.widget.ListView").depth(13).findOne();
}
}
else//如果曾经订阅过,那么需要先找到订阅了哪些
{
var list_view = className("android.widget.ListView").depth(11).findOne();
// log(list_view)
var bottom_flag = 0;
while(list_view!=null)
{
sleep(1000);
var frameLayoutList = list_view.children();
// log('frameLayoutList:'+frameLayoutList)
frameLayoutList.forEach(function(item,index){
if(item.className()=='android.widget.FrameLayout')
{
// log(item)
var account_name = item.find(className("android.widget.TextView"));
// log('已订阅:'+account_name[0].text())
if(subscribed_accounts.indexOf(account_name[0].text())==-1)//说明数组中不存在这个元素
{
subscribed_accounts.push(account_name[0].text());
}
}
else if(item.className()=='android.widget.LinearLayout')//遍历到底了
{
bottom_flag = 1;
return;
}
});
if(bottom_flag)
{
break;
}
list_view.scrollDown();
sleep(2000);
list_view = className("android.widget.ListView").depth(11).findOne();
}
log(subscribed_accounts)
//点击添加
className("android.widget.TextView").text("添加").findOne().click();
//在添加里面逐一扫描每个订阅号是否在上面的已订阅中,如果没匹配到,则订阅这个公众号,订阅num个即可
accounts_pool = className("android.widget.ListView").depth(13).findOne();
var bottom_flag = 0;
while(accounts_pool!=null&&num>0)
{
sleep(1000);
var frameLayoutList = accounts_pool.children();
frameLayoutList.forEach(function(item,index){
if(item.className()=='android.widget.FrameLayout')
{
var account_name = item.find(className("android.widget.TextView"));
if(num>0&&subscribed_accounts.indexOf(account_name[0].text())==-1)//说明数组中不存在这个元素,则订阅他
{
num--;
subscribed_accounts.push(account_name[0].text());
subscribe_icon = item.find(className("android.widget.LinearLayout"))[1];
// log("subscribe_icon:"+subscribe_icon)
toastLog("正在订阅...");
subscribe_icon.click();
sleep(2000);
}
else if(item.className()=='android.widget.LinearLayout')//遍历到底了
{
bottom_flag = 1;
return;
}
}
});
if(bottom_flag)
{
toastLog("强国号都已经订阅完啦...");
break;
}
accounts_pool.scrollDown();
sleep(2000);
accounts_pool = className("android.widget.ListView").depth(13).findOne();
}
}
toastLog("订阅任务执行结束!d==( ̄▽ ̄*)b");
back();//回到 我的订阅
sleep(1000);
back();//回到 我的
sleep(1000);
back();//回到学习首页
sleep(1000);
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jscloud/LearnChinaHelper.git
git@gitee.com:jscloud/LearnChinaHelper.git
jscloud
LearnChinaHelper
LearnChinaHelper
master

搜索帮助