//雙執行緒執行3次
for (i = 0; i < 3; i++) {
threads.start(function() { //執行緒1--主程式
do_main();
});
sleep(4 * 60 * 1000); //執行緒2--防死回圈時間
threads.shutDownAll();
log("防死回圈時間到,結束全部行程");
}
//主程式
function do_main() {
var now_time = new Date();
var now_hours = now_time.getHours()
auto.waitFor("fast"); //檢查無障礙權限啟動
bright_screen();
sleep(500);
//unlock_screen();//只支持安卓>=7.0
sleep(500);
stop_app();
sleep(500);
is_login();
sleep(500);
in_kaoqin();
sleep(500);
if (now_hours <= 12) { //小于等于12點進入上班打卡
do_clock_in();
sleep(500);
} else {
do_clock_out()
sleep(500);
}
device.cancelKeepingAwake();
log("主程式執行完畢,取消設備常亮");
}
//子程式:
//1.亮屏// bright_screen()
//2.解鎖//unlock_screen()
//3.結束釘釘//stop_app()
//4.是否登錄//is_login()
//5.進入考勤頁面//in_kaoqin()
//6.上班打卡//do_clock_in()
//7.下班打卡//do_clock_out()
//1.亮屏
function bright_screen() {
log("進入亮屏子程式")
device.wakeUpIfNeeded(); //喚醒設備
device.keepScreenOn(); //保持亮屏
log("已喚醒");
if (!device.isScreenOn()) {
log("未喚醒");
device.wakeUpIfNeeded();
bright_screen();
}
}
//2.解鎖--安卓7.0及以上才能支持手勢及坐標操作
function unlock_screen() {
log("進入解鎖子程式");
swipe(X1, Y1, X2, Y2, 1000); //上劃調出手勢界面
sleep(1000);
gesture(1000, [X1, Y1], [X2, Y2], [X2 ,Y3]); //手勢解鎖
sleep(1000);
home();
sleep(500);
}
//3.結束釘釘行程,確保啟動釘釘后進入主頁面
function stop_app() {
log("進入結束釘釘行程子程式");
app.openAppSetting("com.alibaba.android.rimet"); //進入釘釘設定
text(app.getAppName("com.alibaba.android.rimet")).waitFor();
let is_sure = textMatches(/(強制.*|.*停止|強行.*)/).clickable(true).findOne();
if (is_sure.enabled()) {
sleep(1000);
textMatches(/(強制.*|.*停止|.*確定.*)/).clickable(true).findOne().click();
sleep(1000);
textMatches(/(強制.*|.*停止|.*確定.*)/).clickable(true).findOne().click();
log(app.getAppName("com.alibaba.android.rimet") + "應用已被關閉");
sleep(500);
home();
} else {
log(app.getAppName("com.alibaba.android.rimet") + "應用不能被正常關閉,重試");
sleep(500);
home();
}
}
//4.判斷是否未登錄 部分需要手動修改代碼
function is_login() {
log("進入登錄判定子程式");
app.launchPackage("com.alibaba.android.rimet");
sleep(7000);
if (id("et_pwd_login").exists()) { //判定是否在登錄頁面
var 手機號碼 = id("et_phone_input").findOne();
手機號碼.setText("請輸入登錄名");
var 密碼 = id("et_pwd_login").findOne();
sleep(1000);
密碼.setText("請輸入登錄密碼");
id("btn_next").findOne().click();
info = "賬號未登錄>>已登錄成功"
log(info)
} else {
if (className("android.widget.RelativeLayout").exists()) {
log("賬號已登錄")
sleep(500);
} else {
log("未檢測到釘釘活動頁面>>重啟釘釘")
is_login();
}
}
}
//5.進入考勤頁面
function in_kaoqin() {
log("進入考勤頁面切換子程式")
if (null != textMatches("作業臺").clickable(true).findOne(3000)) {
toast("text中找到作業臺按鈕")
anniu_gongzou = textMatches(/(.*作業臺.*)/).findOnce()
log("text中找到作業臺按鈕")
sleep(500);
anniu_gongzou.click();
sleep(6000);
if (null != textMatches("考勤打卡").clickable(true).findOne(3000)) {
toast("text中找到考勤打卡按鈕")
anniu_kaoqin = textMatches(/(.*考勤打卡.*)/).findOne()
log("text中找到考勤按鈕")
sleep(500)
anniu_kaoqin.click();
sleep(5000);
log("進入打卡頁面");
} else {
if (null != descMatches("考勤打卡").clickable(true).findOne(3000)) {
toast("desc中找到考勤打卡按鈕")
anniu_kaoqin = descMatches(/(.*考勤打卡.*)/).findOne()
log("desc中找到考勤按鈕")
sleep(500)
anniu_kaoqin.click();
sleep(5000);
log("進入打卡頁面");
} else {
sleep(500)
log("未進入打卡頁面");
sleep(500);
in_kaoqin();
}
}
}
if (null != descMatches("作業臺").clickable(true).findOne(3000)) {
toast("desc中找到作業臺按鈕")
anniu_gongzou = descMatches(/(.*作業臺.*)/).findOnce()
log("desc中找到作業臺按鈕")
sleep(500);
anniu_gongzou.click();
sleep(6000);
if (null != textMatches("考勤打卡").clickable(true).findOne(3000)) {
toast("text中找到考勤打卡按鈕")
anniu_kaoqin = textMatches(/(.*考勤打卡.*)/).findOne()
log("text中找到考勤按鈕")
sleep(500)
anniu_kaoqin.click();
sleep(5000);
log("進入打卡頁面");
} else {
if (null != descMatches("考勤打卡").clickable(true).findOne(3000)) {
toast("desc中找到考勤打卡按鈕")
anniu_kaoqin = descMatches(/(.*考勤打卡.*)/).findOne()
log("desc中找到考勤按鈕")
sleep(500)
anniu_kaoqin.click();
sleep(5000);
log("進入打卡頁面");
} else {
sleep(500)
log("未進入打卡頁面");
sleep(500);
in_kaoqin();
}
}
}
}
//6.上班打卡
function do_clock_in() {
log("進入上班打卡子程式")
if (null != descMatches("上班打卡").findOne(1000)) {
toast("desc中找到上班打卡按鈕")
anniu_click_in = descMatches(/(.*上班打卡.*)/).findOnce()
log("desc中找到上班打卡按鈕");
sleep(1000);
textContains("已進入考勤范圍").waitFor();
var randomtime = random(0, 3) * 60 * 1000;
log(randomtime / 1000 + "秒后執行");
toast(randomtime / 1000 + "秒后執行");
sleep(randomtime);
anniu_click_in.click();
sleep(1000);
if (null != descMatches("我知道了").findOne(1000)) {
desc("我知道了").findOne().click();
}
if (null != textMatches("我知道了").clickable(true).findOne(1000)) {
text("我知道了").findOne().click();
}
sleep(2000);
log("按下打卡按鈕,打卡成功");
} else {
if (null != textMatches("上班打卡").clickable(true).findOne(1000)) {
toast("text中找到上班打卡按鈕")
anniu_click_in = textMatches(/(.*上班打卡.*)/).findOnce()
log("text中找到上班打卡按鈕");
sleep(1000);
textContains("已進入考勤范圍").waitFor();
var randomtime = random(0, 3) * 60 * 1000;
log(randomtime / 1000 + "秒后執行");
toast(randomtime / 1000 + "秒后執行");
sleep(randomtime);
anniu_click_in.click();
if (null != descMatches("我知道了").clickable(true).findOne(1000)) {
desc("我知道了").findOne().click();
}
if (null != textMatches("我知道了").clickable(true).findOne(1000)) {
text("我知道了").findOne().click();
}
sleep(2000);
log("按下打卡按鈕,打卡成功");
} else {
log("未找到上班打卡按鈕>>繼續找");
sleep(500);
let daka_ok = textMatches(/(.*下班打.*|下班打.*)/).findOnce()
if (daka_ok != null) {
log("已出現下班打卡按鈕,無需再按")
sleep(1000);
home();
} else {
log("未打卡,重試");
do_clock_in();
}
}
}
home();
sleep(1000);
log("腳本已執行完畢");
}
//7.下班打卡
function do_clock_out() {
log("進入下班打卡子程式")
if (null != descMatches("下班打卡").findOne(1000)) {
toast("desc中找到下班打卡按鈕")
anniu_click_out = descMatches(/(.*下班打卡.*)/).findOnce()
log("desc中找到下班打卡按鈕");
sleep(1000);
textContains("已進入考勤范圍").waitFor();
var randomtime = random(0, 3) * 60 * 1000;
log(randomtime / 1000 + "秒后執行");
toast(randomtime / 1000 + "秒后執行");
sleep(randomtime);
anniu_click_out.click();
sleep(1000);
if (null != descMatches("我知道了").clickable(true).findOne(1000)) {
desc("我知道了").findOne().click();
}
if (null != textMatches("我知道了").clickable(true).findOne(1000)) {
text("我知道了").findOne().click();
}
sleep(2000);
log("按下打卡按鈕,打卡成功");
} else {
if (null != textMatches("下班打卡").findOne(1000)) {
toast("text中找到下班打卡按鈕")
anniu_click_out = textMatches(/(.*下班打卡.*)/).findOnce()
log("text中找到下班打卡按鈕");
sleep(1000);
textContains("已進入考勤范圍").waitFor();
var randomtime = random(0, 3) * 60 * 1000;
log(randomtime / 1000 + "秒后執行");
toast(randomtime / 1000 + "秒后執行");
sleep(randomtime);
anniu_click_out.click();
if (null != descMatches("我知道了").clickable(true).findOne(1000)) {
desc("我知道了").findOne().click();
}
if (null != textMatches("我知道了").clickable(true).findOne(1000)) {
text("我知道了").findOne().click();
}
sleep(2000);
log("按下打卡按鈕,打卡成功");
} else {
log("未找到下班打卡按鈕>>繼續找");
sleep(500);
let daka_ok = textMatches(/(.*新打卡.*|更新打.*)/).findOnce()
if (daka_ok != null) {
log("已出現更新打卡按鈕,打卡成功")
sleep(1000);
home();
} else {
log("未打卡,重試");
do_clock_out();
}
}
}
home();
sleep(1000);
log("腳本已執行完畢");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47806.html
標籤:Java相關
