auto.js v1.4.4 实现自动打卡
一、使用场景
- 所在公司的打卡软件可以单独变成一个可以点击的APP,所以只需要实现以下步骤:
- 自动解锁屏幕
- 返回主屏幕并打卡
- 锁定屏幕
- 需要的环境:
- 手机端下载并且安装 auto.js v4.1.1
- PC端VS安装对应的插件
- 学习资料
- B站学习资料 对应 第三期,第五期
- auto.js文档
二、环境搭建
1. 手机端下载并且安装 auto.js v4.1.1 github链接,记得要打开该APP所有手机权限(不需要root)
2. VSCode安装 Auto.js-Autox.js-VSCodeExt 插件
三、手机端auto.js和PC端进行连接
- 手机和PC位于同一个局域网
- 必须先打开VSCode Auto.js-Autox.js-VSCodeExt 插件 的服务器
ctrl + shift + P 打开命令框 start server 选择打开auto.js服务器 - 打开手机端的 auto.js 应用程序,点击左上角出现如下,在整个过程中需要的功能如下图:

- 可以在PC端编辑对应的脚本,并且使用以下过程进行调试
ctrl + shift + P 打开命令框 run 使得代码在对应的手机上运行
四、编辑脚本
注意:每一步操作需要sleep来保证操作已经执行
1. 自动解锁屏幕
- 重要的全局函数的基本功能:
// 当前设备屏幕的宽和高 device.width device.height// 判断当前设备的屏幕是否熄屏 device.isScreenOn() // 唤醒屏幕 device.wakeup()// 输入对应的按键 click(keyWord);// 滑动手势 // 从(x1, y1)的位置到(x2, y2)的位置经过duration时间滑动(ms) swipe(x1, y1, x2, y2, duration) - 代码如下:
// 基本过程:唤醒屏幕 -> 滑动屏幕 -> 进入数字密码锁,输入对应的密码 let device_width = device.width; let device_height = device.height; // 判断屏幕是否是打开状态 while(!device.isScreenOn()) {// 唤醒屏幕device.wakeUp();sleep(1000);// 滑动屏幕swipe(device_width / 4, device_height / 4, device_width / 4 * 3, device_height / 4, 1000);sleep(2000);// 输入密码let password = "xxxxxx";let length = password.length;for(let i = 0;i < length;i ++) {click(password[i]);sleep(500);} }
2. 返回主屏幕并打卡
- 关键理解和步骤:
- auto.js对于主页的理解并没有如我们手机的分页,所以只要返回主页就可以操作不同分页上的APP
- 想要获取对应APP所在的位置,可以看 五、获取APP所在位置
- 全局函数理解
// 但会当前正在运行的页面,可以用来判断是不是位于主页 currentActivity()// 利用全局函数selector(选择器获取对用位置) // 使用 五、获取主页名称、APP位置的方法 获取 - 代码如下
// 返回主页 if(currentActivity() != "见 五、获取主页名称、APP位置的方法 ") {home();sleep(500); }// 点击打卡 // 见五、获取主页名称、APP位置的方法 className("android.widget.TextView").desc("打卡").findOne().click();
3. 锁定屏幕
- 由于auto.js并没有锁屏的函数,只需要在主屏幕 添加锁屏 的小部件,然后按照 2 方法进行点击即可
- 代码如下:
sleep(5000); // 返回主页 home(); sleep(500); // 点击锁屏 根据 五、获取主页名称、APP位置的方法 className("android.widget.TextView").desc("一键锁屏").findOne().click();
五、获取主页名称、APP位置的方法
- 获取主页名称
- 将手机页面置于主页
- 运行以下代码,即可在对应的命令窗口获取到主页的地址
let cur_Activity = currentActivity() console.log(cur_Activity)
- 获取APP位置
需要代开悬浮窗的功能:

步骤如下:






六、最终的代码
let device_width = device.width;
let device_height = device.height;
// 判断屏幕是否是打开状态
while(!device.isScreenOn()) {// 唤醒屏幕device.wakeUp();sleep(1000);// 滑动屏幕swipe(device_width / 4, device_height / 4, device_width / 4 * 3, device_height / 4, 1000);sleep(2000);// 输入密码let password = "xxxxxx";let length = password.length;for(let i = 0;i < length;i ++) {click(password[i]);sleep(500);}
}// 返回主页 需要 五、获取主页名称、APP位置的方法
if(currentActivity() != "com.huawei.android.launcher.unihome.UniHomeLauncher") {home();sleep(500);
}// 点击打卡 需要 五、获取主页名称、APP位置的方法
className("android.widget.TextView").desc("打卡").findOne().click();sleep(5000);
// 返回主页
home();
sleep(500);
// 点击锁屏 五、获取主页名称、APP位置的方法
className("android.widget.TextView").desc("一键锁屏").findOne().click();
七、设置定时(见 B站学习资料 第十六期)
相关文章:
auto.js v1.4.4 实现自动打卡
一、使用场景 所在公司的打卡软件可以单独变成一个可以点击的APP,所以只需要实现以下步骤: 自动解锁屏幕返回主屏幕并打卡锁定屏幕需要的环境: 手机端下载并且安装 auto.js v4.1.1 PC端VS安装对应的插件学习资料 B站学习资料 对应 第三期&am…...
【Linux实验室】NFS、DHCP的搭建
NFS、DHCP的搭建 1、nfs服务搭建及测试什么是NFS?环境准备服务端机器安装nfs-utils和rpcbind包启动NFS服务创建/data/NFSdata目录,配置nfs文件启动服务挂载测试在服务端在共享目录下创建文件测试在客户端在共享目录下创建文件 2、dhcp服务搭建及测试什么…...
Samba 总是需要输入网络凭证
输入网络凭证: 用户名是 cat /etc/samba/smb.conf,查看 valid users mxw 为用户名。而不是其他账号名或者用户名,更不是登录计算机时的计算机名; 密码是 需要记住安装samba服务器时,自己设置的password࿱…...
图像处理_积分图
目录 1. 积分图算法介绍 2. 基本原理 2.1 构建积分图 2.2 使用积分图 3. 举个例子 1. 积分图算法介绍 积分图算法是图像处理中的经典算法之一,由Crow在1984年首次提出,它是为了在多尺度透视投影中提高渲染速度。 积分图算法是一种快速计算图像区域和…...
B/S架构SaaS模式 医院云HIS系统源码,自主研发,支持电子病历4级
B/S架构SaaS模式 医院云HIS系统源码,自主研发,支持电子病历4级 系统概述: 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查…...
(C)1005 继续(3n+1)猜想
1005 继续(3n1)猜想: 问题描述 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n3 进行验证的时候&a…...
编译好的C++应用程序拷贝到其它电脑,提示dll未找到依赖项的解决方法。
编译好的C应用程序拷贝到其它电脑上,运行时出现提示dll未找到依赖项。 由于dll依赖于其它dll,在开发用电脑上的环境不能完全与其它电脑相同。 解决办法是找到调用到的dll依赖的所有dll,拷贝到运行目录下。 在开发电脑上: 1、开…...
wps 开发插件
官方文档参考wps官方文档参考 1.环境安装 安装wps https://www.wps.cn/ 安装Node.js https://nodejs.org/en 安装代码编辑器 Visual Studio Code https://code.visualstudio.com/ 环境检查-进入cmd查看 node -v2.demo 2.1 demo下载 打开vscode,新建终端 安装…...
C语言----数据在内存中的存储
文章目录 前言1.整数在内存中的存储2.大小端字节序和字节序判断2.1 什么是大小端?2.2 练习 3.浮点数在内存中的存储3.1.引子3.2.浮点数的存储3.2.2 浮点数取的过程 前言 下面给大家介绍一下数据在内存中的存储,这个是一个了解c语言内部的知识点…...
【Linux学习】Linux 的虚拟化和容器化技术
˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...
Delphi 是一种内存安全的语言吗?
上个月,美国政府发布了 "回到基石 "报告: 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告进行了评论࿰…...
golang语言系列:Scrum、Kanban等敏捷管理策略
云原生学习路线导航页(持续更新中) 本文是 golang语言系列 文章,主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语,它强调增量交付、团队协作、持续规划和持续学习。…...
QT背景介绍
🐌博主主页:🐌倔强的大蜗牛🐌 📚专栏分类:QT❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、QT背景 1.1什么是QT 1.2QT的发展历史 1.3什么是框架、库 1.4QT支持的平台 1.5QT的优点 1.6QT的…...
动态规划详解(Dynamic Programming)
目录 引入什么是动态规划?动态规划的特点解题办法解题套路框架举例说明斐波那契数列题目描述解题思路方式一:暴力求解思考 方式二:带备忘录的递归解法方式三:动态规划 推荐练手题目 引入 动态规划问题(Dynamic Progra…...
前端大额计算,真正解决js精度丢失问题
1.解决前端大额计算导致精度丢失问题 2.从底层上解决这个问题,计算时不使用js 运行时计算。 使用rust语言来解决这个问题,因为是底层语言,不涉及到精度问题。 3.实现步骤 步骤 1: 安装工具 确保你已经安装了Rust工具链和wasm-pack&#x…...
Android笔记--MediaCodec(一)
这一节主要来了解一下MediaCodec,Android MediaCodec 是 Android 平台提供的一个用于处理音频和视频数据的 API。它允许开发者对音频和视频数据进行编码和解码,支持多种格式和编解码器。MediaCodec API 通常用于实现实时音视频处理,如视频录制…...
Linux简单介绍
Linux简单介绍 编译器VMware虚拟机Ubuntu——LinuxOS为什么使用LinuxOS? 目录结构Windows目录结构Linux操作系统home是不是家目录? Linux常用命令终端命令行提示符与权限切换命令tab 作用:自动补全上下箭头pwd命令ls命令mkdir命令touch命令rm…...
Servlet 的基本理解
Servlet 是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。如一个http请求到来:容器将请求封装为servlet中的HttpServletRequest对象,调用init()&a…...
JavaScript之applye、bind和call方法详解
Question Q1 apply()、bind()和call()方法的区别在哪? Q2 apply()和call()的应用场景 Q3 apply()、bind()和call()方法手写实现逻辑 来源 继承自Function.prototype,属于实例方法 console.log(Function.prototype.hasOwnProperty(call)) //trueconsole.l…...
Docker,anaconda环境的部署与迁移
功能上线将提上日程,但是如何将我windows环境下的程序放到linux服务器的测试环境跑通呢?这是我这整个清明假期将要解决的一件事,最蠢的办法就是看自己的环境下有哪些依赖,如何到服务器上一个一个下,但是首先这个方法很…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
