用处:很多时候做验证码得判定,是希望每次点击(或者其他行为)发生后都进行判定。
难点:
思考:
实现:
利用钩子,以打印日志这个原生功能为例,module1.py
import xbot
import xbot_visual
from xbot import print, sleep
from .import package
from .package import variables as glv
pppp=xbot_visual.programing.log #具体函数可以找到流程下得py文件去看,这个不赘述了,先复制一个函数,防止后面循环改动
def hhhh(mysupertext,*args,**argvs):
'''
拓展原生得函数,此处mysupsertext 可以是从glv来得dict ,然后写一系列复杂得处理就可以把参数传递了
'''
argvs['text']=mysupertext+(argvs['text'] if 'text' in argvs else '')
return pppp(*args,**argvs)
def main(args):
'''
篡改原生函数
'''
global hhhh
xbot_visual.programing.log=slog
def slog(*args,**argvs):
'''
保持和原生函数同参
'''
global hhhh
return hhhh('哈哈哈',*args,**argvs)
效果 核心开打印结果 这条原生命令都是打印日志 1111但是 在单独执行测试时是1111,但是在测试2 先执行了module1得时候,就变成了 哈哈哈1111
单独执行 测试

执行测试1 流程 及先执行module 1 再执行 测试

我们可以明显看到在为改变测试得前提下,修改了测试得输出
通用得原理利用到点击元素(WEB)等自带指令,只需要在主流程第一行,执行你得篡改代码,就可以使得后续使用完成变成你自定义得