# ClickerX
**Repository Path**: frenzy/ClickerX
## Basic Information
- **Project Name**: ClickerX
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-11-16
- **Last Updated**: 2024-11-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ClickerX
ClickerX是Android平台上一款免root模拟触摸和按键的工具。通过编写脚本,可以实现自动执行一系列的操作,解放双手。
ClickerX类似于电脑上的按键精灵,可以模拟用户的操作、完成重复的动作,例如:自动化测试、自动回复、抢红包等。ClickerX脚本是基于Lua的,封装了一系列模拟操作的函数。
脚本分为主动执行脚本与触发脚本。主动执行脚本即是普通的脚本,需要手动执行或者预约时间执行,不需要触发事件,例如App的签到;触发脚本指的是需要事件触发才能执行的脚本,需要特定事件的触发以执行一系列的任务,例如微信抢红包。
# ClickerX API v0.0.0.0
函数 | 作用 | 参数
---- | ---- |----
launchApp(pkgName) | 启动/跳转到包名为`pkgName`的应用 | pkgName: string
delay(millis) | 暂停`millis`毫秒 | millis: number
clickById(id) | 点击id为`id`的控件 | id: string
clickByText(text) | 点击文字为`text`的控件 | text: string
clickAt(x, y) | 点击屏幕上坐标(`x`, `y`)的点 | x: number, y: number
clickBy(args) | 点击满足条件`args`的控件,可选参数`text`、`id`、`desc`(contentDescription) | args: table
pressKey(key) | 按下实体键`key`,可选项有`KEY_BACK`、`KEY_HOME`、`KEY_RECENT`、`KEY_NOTIFICATION` | key: number
getScreenWidth() | 获取屏幕宽度 |
getScreenHeight() | 获取屏幕高度
swipe(x1, y1, x2, y2, duration) | 模拟从(`x1`, `y1`)滑动到(`x2`, `y2`)的操作,时长`duration` | x1, y1, x2, y2, duration: number
setDefaultDelay(delay) | 设置该脚本中相邻两条指令的默认间隔为`delay`毫秒 | delay: number
input(text) | 输入文字`text` | text: string
setTrigger(name, triggerType, args, action) | 设置名称为`name`、类型为`triggerType`的触发器。
其中`args`为参数;当`triggetType`为`TRIGGER_TYPE_NOTIFICATION`时,
表示该脚本由通知触发,可选参数有`title` - 通知标题、`content` - 通知的内容、`pkgName` - 发送通知的包名;当不添加对应参数,表示监听所有。`action`为脚本被触发后需要执行的操作。 | name: string, triggetType: number, args: table, action: function
# 开发进度
**2021年6月7日 v0.0.0.0**
初始版本。完成了核心功能(解析Lua脚本并执行自动化操作流程、按照触发器执行触发脚本)以及必要的UI。
# 脚本示例
## 1. 自动发消息
```lua
---
--- 微信发送消息脚本
---
-- 设计尺寸,用于按比例点击。
-- 例如,设计宽度为1080px,点击x=540;在宽度为720px的手机上,会转换成x=360。
local baseWidth = 1080
setDefaultDelay(1000) -- 设置每个动作直接最少间隔1秒
launchApp("com.tencent.mm") -- 启动微信
delay(2000) -- 考虑到冷启动时间,延迟5秒
clickByText("通讯录") -- 点击通讯录
clickBy({ desc = "搜索" }) -- 点击搜索按钮
input("巧克力") -- 输入发送对象的名字
delay(1500) -- 等待搜索结果
clickByBaseX(550, 400, baseWidth) -- 点击用户头像进入聊天
input("晚安") -- 输入要发送的消息
clickByText("发送") -- 点击发送按钮
pressKey(KEY_BACK) -- 点击3次返回,回到桌面
pressKey(KEY_BACK)
pressKey(KEY_BACK)
```
## 2. 自动抢红包(触发脚本)
```lua
-- 抢红包脚本
-- 触发器名称
local triggerName = "微信抢红包"
-- 监听类型:通知
local triggerType = TRIGGER_TYPE_NOTIFICATION
-- 参数:包名=微信
local params = {
pkgName = "com.tencent.mm"
}
-- 动作
-- notification: 满足条件的通知
local action = function(notification)
local content = notification:getContent() -- 获取通知内容
local title = notification:getTitle() -- 通知标题
print("监听到通知:标题=" .. title .. ", 内容=" .. content)
-- 汉字和特殊符号前面需要加%
local found = content:find("%[%微%信%红%包%]")
if found then
-- 如果消息中包含[微信红包]
print("抢红包脚本触发!")
-- 这是一个红包消息
notification:click() -- 点击通知进入对应界面
delay(1000) -- 间隔1秒
clickAt(200, 1750) -- 点击最新消息坐标
delay(1000)
clickBy({ desc = "开" }) -- 点击开红包
delay(3000)
pressKey(KEY_HOME) -- 10秒后返回桌面
end
end
-- 调用setTrigger开始监听
setTrigger(triggerName, triggerType, params, action)
```