EasyRun|节点链式和常用函数

  • 作者: 爾ф氵曼埗
  • 热度: 59308092
  • 更新: 2024-02-27 23:09:06

# 引入插件

   compile("EasyRun:1.1.0_release_android_filecode")
1

# 使用说明

# 使用前必要说明:

1. 文档中的函数参数为三个点...表示参数不限个数, 亦可空, 带[]括号, 则表示参数可省略

2. 所有函数使用pcall封装, 即使出错脚本也不会停止

3. 函数传参做了一系列处理, 当你传入的参数不符合要求, 将会print日志

4. 插件免费使用

5. 插件使用问题, 各种技术交流, 可加QQ群: 339557523


# 使用简介:

# 一.导入插件:compile("EasyRun")

# 二.常用函数:

1.随机函数:

random([num1][,num2]) -- 随机数字(参数不区分大小顺序, 当不传入参数时, 在0和1之间随机一个数字, 当传入一个参数时, 在1到此参数之间随机一个数字, 当传入两个参数时, 在此两个参数之间随机一个数字) randomChar() -- 随机一个汉字 randomArr(arr) -- 随机取数组中的一个元素

random() => 0
random(123) => 100
random(50,100)  =>  66
random(100,50)  =>  88
randomChar()  =>  看
randomArr({1,2,3,4,5,6,})  =>  3

2.字符串处理函数:

findStr(str,str1) -- 查找字符串,找到返回字符串的起始位置,没找到返回nil split(str,reps) -- 分割字符串 replace(str, beReplace, toStr) -- 替换字符串中指定的内容 trim(str) -- 删除字符串首尾空 len(str) -- 取字符串长度 mid(str,start,num) -- 取字符串内容,start为起始位置,num为截取的字符长度(注意一个汉字长度为3,其他字符一个长度为1) midEx(str,str1,str2) -- 取字符串str中两个字符串str1,str2之间的内容,不包括str1,str2 left(str,str1) -- 取字符串str中的字符串str1左边所有内容,不包括str1() right(str,str1) -- 取字符串str中的字符串str1右边所有内容,不包括str1

findStr('wozainageweizhi','ge')  =>  8
split("1|2|3", "|")  =>  ["1", "2", "3"] 
replace("靓仔~搭车么咯?", "靓仔", "靓女")  =>  "靓女~搭车么咯?"
trim("  小 姐姐            ")  =>  "小 姐姐"
len("猜猜我是谁")  =>  15  (汉字每一个字占三位长度)
len("abc")  =>  3
mid("123456789",3,3)  =>  "345"
midEx("123456789","123","789")   =>  "456"
left("123456789","789")  =>  "123456"
right("123456789","123")  =>  "456789"

3.时间处理函数:

year([time]) -- 返回时间中的年份(参数为时间戳,省略时为当前系统时间) month([time]) -- 返回时间中的月份(参数为时间戳,省略时为当前系统时间) day([time]) -- 返回时间中在当前月份的第几天(参数为时间戳,省略时为当前系统时间) hour([time]) -- 返回时间中当天的第几个小时(参数为时间戳,省略时为当前系统时间) minute([time]) -- 返回时间中的分钟(参数为时间戳,省略时为当前系统时间) second([time]) -- 返回时间的秒数(参数为时间戳,省略时为当前系统时间) weekDay([time]) -- 返回时间中在星期的第几天(参数为时间戳,省略时为当前系统时间) yearDay([time]) -- 返回时间中在当年的第几天(参数为时间戳,省略时为当前系统时间) toDate([time][, format]) -- 时间戳转成指定格式的日期(time参数省略时为当前系统时间,format省略时默认格式为"%Y-%m-%d %H:%M:%S") toUnixTime([date]) -- 日期转成时间戳(省略时为当前系统时间) compareTime(date) -- 将指定日期与当前网络时间对比,指定日期大于当前网络时间返回true,小则返回false lateTime(late[,date]) -- 计算几天之后的日期 now(...) -- 取当前系统时间,参数省略时返回日期格式时间,填入任意参数返回时间戳 netTime(...) -- 取当前网络时间,参数省略时返回日期格式时间,填入任意参数返回时间戳

以当前时间为"2020-05-08 22:03:40",当前时间戳为1588946620,来举例
year(1588946620)  =>  2020
month(1588946620)  =>  5
day(1588946620)  =>  8
hour(1588946620)  =>  22
minute(1588946620)  =>  3
second(1588946620)  =>  40
weekDay(1588946620)  =>  5
yearDay(1588946620)  =>  129
toDate(1588946620)  =>  "2020-05-08 22:03:40"
toUnixTime("2020-05-08 22:03:40")  =>  1588946620
compareTime("2021-05-08 22:03:40")  =>  true (指定日期比当前日期大)
compareTime("2019-05-08 22:03:40")  =>  false (指定日期比当前日期小)
lateTime(5)  =>  "2020-05-13 22:03:40"
now()  =>  "2020-05-08 22:03:40",参数省略时返回日期格式时间
now(1)  =>  "1588946620",填入任意参数返回时间戳
netTime()  =>  "2020-05-08 22:03:40",参数省略时返回日期格式时间
netTime(1)  =>  "1588946620",填入任意参数返回时间戳

4.文件读写函数:

(例子只演示txt文本文件,实际上文件读写函数理论上是支持所有文本类文件的,诸如后缀名为lua,js等等的文件)

read(filePath) -- 读取文件内容 readLine(filePath,num) -- 读取文件指定行内容 readLines(filePath) -- 读取文件内容到数组 linesNumber(filePath) -- 取文件内容行数 write(filePath,str) -- 写内容到文件(覆盖写入) writeLine(filePath,line,str) -- 在文件指定行写入内容 writeLineTC(filePath,line,str) -- 在文件指定行写入内容(未测试, 用法和writeLine一样, 如果使用writeLine写入出现空行请使用此函数) writeLines(filePath,strArr) -- 把数组中的内容写到文件 writeLinesTC(filePath,strArr) -- 把数组中的内容写到文件(未测试, 用法和writeLines一样, 如果使用writeLines写入文件出现空行请使用此函数) addEnd(filePath,str) -- 在文件内容最后加入内容 deleteLine(filePath,line) -- 删除文件指定行内容 replaceFile(filePath,str,toStr) -- 替换文件指定内容

read("/sdcard/test.txt")  --  读取test文件的内容
readLine("/sdcard/test.txt",5)  --  读取test文件第5行的内容
readLines("/sdcard/test.txt")  --  读取test文件的内容并保存到数组中
linesNumber("/sdcard/test.txt")  --  取test文件内容总行数
write("/sdcard/test.txt","123456789")  --  把"123456789"写入到test文件中(覆盖写入,test之前的内容会被清空)
writeLine("/sdcard/test.txt",5,"123456789")  --  在test文件第5行写入"123456789"
writeLines("/sdcard/test.txt",{"123","456","789"})  --  在test文件中分别写入"123","456","789"
addEnd("/sdcard/test.txt","12456789")  --  在test文件最后面写入"123456789",test文件之前的内容被保留
deleteLine("/sdcard/test.txt",3)  --  删除test文件第3行的内容
replaceFile("/sdcard/test.txt","123","456")  --  把test文件中的"123"替换成"456"

5.其他

longClick(x,y[,time]) -- 长按

longClick(100,100,500)  =>  在点(100,100)处长按500毫秒
longClick(100,100)  =>  在点(100,100)处长按1000毫秒,time参数省略,默认1000毫秒

rangeClick(x1,y1,x2,y2) -- 在指定范围内随机一个坐标进行点击

rangeClick(100,100,200,200)  =>  在(100,100,200,200)内随机点击一个坐标

# 三.颜色处理:

getColorRGB(hex) 16进制字符串颜色转换R,G,B十进制整数值

local r,g,b=getColorRGB("#123456")
print(r)  =>  18
print(g)  =>  52
print(b)  =>  86
print(r..g..b)  =>  185286

getColorHex({r,g,b}) 颜色RGB转换成16进制字符串形式

local color = getColorHex({18,52,86})
print(color)  =>  "#123456"

# 四.节点链式:

# (一)时间睡眠类:

as([t]) 动作时间间隔,此方法可不调用,不调用时默认500ms

bas(t) 动作开始前睡眠一段时间,此方法可不调用,不调用则不睡眠

aas(t) 动作结束后睡眠一段时间,此方法可不调用,不调用则不睡眠

注:时间睡眠类分为全局调用和单个动作调用(同类型睡眠在单个动作和全局同时被调用时,对于该动作来说,只调用单个动作中的睡眠)

(1).全局调用(需在脚本开头调用),在所有动作中都生效(如果同时单个动作中也设置了同类型睡眠,那么对于该动作来说,只有在该动作中设置的睡眠生效)

rule:as([t])  --  所有动作时间间隔为t毫秒
rule:bas(t)  --  所有动作开始前先睡眠t毫秒
rule:aas(t)  --  所有动作结束后再睡眠t毫秒
rule:as(t):bas(t):aas(t)  --  多个睡眠,可使用链式

(2).单个动作调用

R():text("QQ"):as(1000):tap()  --  as在链式中放在动作前(tap为动作,as放在tap前)
R():text("QQ"):bas(1000):tap()  --  bas在链式中放在动作前(tap为动作,bas放在tap前),在点击QQ之前先睡眠1秒
R():text("QQ"):aas(1000):tap()  --  aas在链式中放在动作前(tap为动作,aas放在tap前),在点击QQ之后睡眠1秒

####(二)检索(查找)类:

findOnce() 查找一次节点,找到返回节点检索规则,没找到返回nil

findOne() 一直查找节点直到找到节点(阻塞)

isExist() 判断节点是否在当前页面

waitFor() 等待节点出现(阻塞)

withInFind(...) 在指定时间内查找节点,找到返回节点规则,超过指定时间没找到返回nil

(1).直接在节点规则中加入链式

R():text("QQ"):findOnce()  --  查找一次QQ
R():text("QQ"):findOne()  --  一直查找QQ直到找到为止
R():text("QQ"):isExist()  --  判断QQ是否在当前页面
R():text("QQ"):waitFor()  --  一直等待直到QQ出现为止
R():text("QQ"):withInFind()  -- 在5秒内查找QQ,找到返回节点规则,超时没找到返回nil,此处参数省略,默认5秒
R():text("QQ"):withInFind(10) -- 在10秒内查找QQ,找到返回节点规则,超时没找到返回nil

(2).把节点规则赋值给变量后调用

local QQ = R():text('QQ')
QQ:findOnce()  --  查找一次QQ
QQ:findOne()  --  一直查找QQ直到找到为止
QQ:isExist()  --  判断QQ是否在当前页面
QQ:waitFor()  --  一直等待直到QQ出现为止
QQ:withInFind()  -- 在5秒内查找QQ,找到返回节点规则,超时没找到返回nil,此处参数省略,默认5秒
QQ:withInFind(10) -- 在10秒内查找QQ,找到返回节点规则,超时没找到返回nil

####(三)动作类:

(1)按键类:

forBack() 一直按返回键直到节点出现(阻塞)

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):forBack()  -- 一直按返回键直到QQ出现在当前页面为止

(2)输入类:

enter(str) 在节点里输入文本

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):enter("你好") 

(3)滑动类:

swipe(x1,y1,x2,y2,time) 节点出现后滑动页面

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text('QQ'):swipe(100,100,200,200,500)  --  出现QQ时滑动页面

(4)点击类

# 1.直接点击节点类

tap() 点击节点

untilTap() 一直查找节点直到找到节点并点击(阻塞)

withInTap(...) 在指定时间内查找节点,找到节点那么点击节点,超过时间没找到则不点击

此处只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):tap()  --  查找一次QQ,找到点击,没找到则不点击
R():text("QQ"):findOne():tap()  --  直到找到QQ并点击
R():text("QQ"):isExist():tap()  --  如果QQ在当前页面则点击QQ,不在则不点击
R():text("QQ"):withInFind():tap() -- 在5秒内如果找到QQ则点击QQ,超过时间没找到则不点击,此处参数省略,默认5秒
R():text("QQ"):withInFind(10):tap()  --  在10秒内如果找到QQ则点击QQ,超过时间没找到则不点击
R():text("QQ"):untilTap()    --  直到找到QQ并点击(效果与findOne():tap()相同)
R():text("QQ"):withInTap()  -- 在5秒内如果找到QQ则点击QQ,超过时间没找到则不点击,此处参数省略,默认5秒(效果与withInFind():tap()相同)
R():text("QQ"):withInTap(10)  --  在10秒内如果找到QQ则点击QQ,超过时间没找到则不点击(效果与withInFind():tap(10)相同)
# 2.随机点击节点类

randomTap(...) 在节点的范围缩减...个像素的范围内进行随机点击,参数不填时默认缩减1像素

untilRandomTap(...) 一直查找节点直到找到节点并在节点的范围缩减...个像素的范围内进行随机点击,参数不填时默认缩减1像素(阻塞)

withInRandomTap(t,tt) 在指定时间t内查找节点(t参数省略时默认5秒),如果找到节点那么在节点的范围缩减tt个像素(tt参数不填时默认缩减1像素)的范围内进行随机点击,超过时间没找到则不点击

只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):randomTap(5)  --  查找一次QQ,如果找到QQ那么在节点的范围缩减5个像素的范围内进行随机点击,参数不填时默认缩减1像素,没找到QQ则不点击
R():text("QQ"):untilRandomTap(5)  -- 一直查找QQ直到找到QQ那么在QQ节点的范围缩减5个像素的范围内进行随机点击,参数不填时默认缩减1像素
R():text("QQ"):withInRandomTap(10,5)  --  在10秒内(参数省略时默认5秒)如果找到QQ那么在节点的范围缩减5个像素(参数不填时默认缩减1像素,如果填写此参数,则前面的超时参数也要填写)的范围内进行随机点击,超过时间没找到则不点击
# 3.指定坐标范围随机点击类

rangeTap(x1,y1,x2,y2) 当出现节点时,在指定的范围内进行随机点击

untilRangeTap(x1,y1,x2,y2) 一直查找节点直到找到节点并在指定的范围内进行随机点击(阻塞)

withInRangeTap(t,x1,y1,x2,y2) 在指定时间t内查找节点,如果找到节点那么在指定的范围内进行随机点击,超过时间没找到则不点击

只演示节点规则中直接加入链式,赋值变量请参考节点检索类
R():text("QQ"):rangeTap(100,100,200,200)  --  查找一次QQ,如果找到QQ那么在(100,100,200,200)范围内进行随机点击
R():text("QQ"):untilRangeTap(100,100,200,200)  -- 一直查找QQ直到找到QQ那么在(100,100,200,200)的范围内进行随机点击
R():text("QQ"):withInRandomTap(10,100,100,200,200)  --  在10秒内如果找到QQ那么在(100,100,200,200)范围内进行随机点击,超过时间没找到则不点击
# 4.点击节点中心坐标类

tapCenter() 点击节点中心坐标

untilTapCenter() 一直查找节点直到找到节点并点击节点中心坐标(阻塞)

withInTapCenter(...) 在指定时间内查找节点,如果找到节点那么点击节点中心坐标,超过时间没找到则不点击

用法和直接点击类一样,请参考直接点击类

# 历史版本

更新记录