配置文件通过 json 保存, 具体格式如下(下方模板包含大部分支持的操作,可以作为编写时的参考):
{
"version": "1.3",
"interval": 1.0,
"checks": [
{
"type": "event",
"event": "null",
"rate": 1,
"todo": {
"type": "todo",
"actions": [
{
"type": "action",
"action": "screen_shot",
"save": "desktop.png"
}
]
}
},
{
"type": "event",
"event": "image_appear",
"base": "./desktop.png",
"image": "./baseimg/xxx.png",
"precision": 0.95,
"var": "$last_pos",
"rate": 1,
"todo": {
"type": "todo",
"actions": [
{
"type": "action",
"action": "move_mouse_to",
"var": "$last_pos"
},
{
"type": "action",
"action": "sleep",
"sleep_time": 0.5
},
{
"type": "action",
"action": "mouse_click",
"push_time": 0.1
},
{
"type": "action",
"action": "get_image_pos",
"var": "$image_pos",
"base": "desktop.png",
"image": "./baseimg/xxxx.png",
"precision": 0.95
},
{
"type": "action",
"action": "move_mouse_to",
"var": "$image_pos"
},
{
"type": "sleep",
"action": "sleep",
"sleep_time": 0.5
},
{
"type": "action",
"action": "mouse_click",
"push_time": 0.1
},
{
"type": "action",
"action": "text_input",
"text": "Hello World!"
}
]
}
},
{
"type": "event",
"event": "null",
"todo": {
"type": "todo",
"actions": [
{
"type": "action",
"action": "remove_file",
"ignore_error": true,
"path": "desktop.png"
}
]
}
},
]
}
具体实现方法采用总类实现。
通过解析json文件获取检测结构,通过该检测结构加入基本运行时。
应用为单线程~~,但也可以指派mutithreading
来注册多线程事件。~~(代办)
基础类通过不同子类实现不同功能,极大程度保证可扩展性。
默认读取当前目录下的config.json
文件作为配置文件。
在根中,标记了软件版本、事件检查列表等信息,具体格式如下:
{
"version": "(version)",
"interval": "(interval_time)",
"checks": [
"(events)"
]
}
下面说明各参数的作用:
verison
:指明配置文件对应的软件版本,不同版本的软件对配置文件的要求不同,使用前请仔细检查你的配置文件是否符合对应版本的要求。
interval
:检查事件的间隔。
checks
:所有需要注册的事件。
在根的checks
段中,需要注册不同的事件来触发行为 (action
) 。
event
类型结构是这样的:
{
"type": "event",
"event": "(event_type)",
"rate": "(event_check_rate)",
"todo": {
"type": "todo",
"actions": []
}
}
所有的event
类型都**须要**包含以下参数:
- type (值必须为 event),用于显式识别类型。
- rate,事件检查间隔,1表示无间隔,数字越大间隔越大。
- event,指定事件类型。
- todo,事件触发后的后续操作的集合类型。
同时,不同类型的事件有不同的参数,下面给出不同类型的事件的作用和参数:
- 参数
"event": "null"
- 触发条件
每次检查事件是都会始终触发该事件。
- 参数
"event" : "image_appear",
"base" : "(path_or_var_to_base_image)",
"image" : "(path_or_var_to_target_image)",
"var" : "(var_name_to_store_image_position)",
"precision": "(image_search_minimum_precision)"
参数释义:
base
:基础图像的路径或变量。
image
:待查找图像的路径或变量。
var
:查找到图像后储存查找信息的变量名(后续操作可能需要此信息)。
precision
:查找最小精度(0-1),建议0.95。
- 触发条件
当查找到image
出现在base
中后,会将查找信息储存在var
中,并触发后续操作。
当事件触发后,会通过todo
对象处理后续操作。
todo
对象具体格式如下:
{
"type": "todo",
"actions": [
"(actions)"
]
}
下面说明各参数作用:
actions
:指定后续操作,按顺序执行。
注意:当其中某个action
操作失败时,会跳过当前todo
对象的后续操作。
操作的基本格式如下:
{
"type": "action",
"action": "(action_type)"
}
当action
操作发生可预测的错误时,将停止后续操作,部分action
可以选择忽略可预测错误。当action
发生不可预测错误时,将报错并终止上下文操作。
不同的操作有不同的功能和不同的参数。
下面给出所有支持的操作:
- 作用
将鼠标移动到指定位置
- 参数
"action": "move_mouse_to",
"var" : "(var_to_target_location)"
参数释义:
var
:已记录目标位置的变量名
- 作用
延时指定时间
- 参数
"action" : "sleep",
"sleep_time": (time_to_sleep)
参数释义:
sleep_time
:休眠时间,单位:秒,类型:float
- 作用
模拟鼠标点击
- 参数
"action" : "mouse_click"
"push_time": (time_to_push_button)
参数释义:
push_time
:按钮按下到抬起的时间,单位:秒,类型:float
- 作用
获取小图像在大图像中的位置
- 参数
"action" : "get_image_pos",
"var" : "(var_to_store_result)",
"base" : "(path_or_var_to_base_image)",
"image" : "(path_or_var_to_image)",
"precision": "(precision_to_search_image)"
参数释义:
var
:储存搜索结果的变量名
base
:搜索的基底图片路径或变量
image
:需要搜索的图片路径或变量
precision
:搜索精度(0-1)
- 作用
用于完整屏幕截图
- 参数
"action": "screen_shot",
"save" : "(path_to_save_screenshot)"
参数释义:
save
:保存截图的路径
- 作用
同上,但数据储存于变量中
- 参数
"action": "screen_shot_mem"
"var" : "(var_name_to_store_image)"
参数释义:
var
:用于储存图像的变量
- 作用
删除指定文件
- 参数
"event" : “remove_file”,
"ignore_error": (is_ignore_error),
"path" : "(path_to_remove)"
参数释义:
ignore_error
:忽略错误,继续执行后续操作,类型:bool
path
:需要删除的文件路径
- 作用
模拟键盘出入文字
- 参数
"action": "text_input",
"text" : "(something_to_input)"
参数释义:
text
:需要输入的文本
- 作用
读取文件内容,通过键盘模拟操作
- 参数
"action": "text_input_file",
"file": "(path_to_file)"
- 参数释义
file
:文本文件路径
变量名前一律加上美元符号$
,变量名首位为**下划线_
**为全局变量,否则为局部变量(在当前event中生效)