需求:
人懒,手笨,爱研究
在冬天这么冷的天儿,在掏出手机去一步步等这反人类的打卡软件一步步点下去,手机能扛住我也扛不住。
于是,
“自动卓”操作安卓版的“东软OA”软件进行自动打卡,代码挺简单,整体操作就是打开软件,然后点击切换两个界面。在最终的打卡界面等待定位地址出来后点击打卡按钮。
具体代码如下:
wakeUpScreen()
// 打开软件
openApp('com.neusoft.sacasnap')
wait(2000)
try {
var workView = null;
while (workView == null) {
workView = findViewById('btn_container_work')
if (workView == null) {
back();
} else {
click(workView);
}
sleep(1000);
}
// 点击外勤打卡
click('外勤打卡');
var view = null;
var cationText = null;
// 每过一秒去检查地址定位完毕打卡按钮是否出现
while (view == null) {
view = findViewById('mt');
cationText = findViewById('cation');
var vo = JSON.parse(cationText);
var text = vo['text'] || "";
if (view != null && text.length > 0) {
click(view);
log(text);
} else {
sleep(1000)
}
}
wait(1000);
} catch (e) {
log(e);
}
小技巧
得出上面的那些控件id和控件的文字,这个不需要拥有软件的源码,只需要用一些软件去查看布局,我用的 “TapClick.apk”,打开 “显示布局” 就可以在对应界面查看软件的布局,挺好用。
只需要简单的无障碍权限配置就可以操作,不需要其他软件那样麻烦。
获取到的控件信息,是一个json的对象可以将其转为对象取值。
生成控件需要一定的时间,所以需要一定的等待时间。