萝卜L

导航

节点精灵 功能

  • 节点精灵,R:text不支持内容中含换行,需要使用(\\s|.)*,如R:text"测试(\\s|.)*"(而非R:text"测试.*"
  • 新增/内置exec函数,可执行linux命令,但需要Root,否则提示Root 权限获取失败
    怀疑os.execute某些命令(如am)失败也和权限有关。->am命令需要root权限,否则报错65280(65280%255=0)
  • io.popen不可以用,提示'popen' not supported
  • 不支持在(Find/Finds)查找到节点上路由(如父子兄)。(只能手动构造同时包含条件和结果的检索R,遍历所有结果,手动按条件筛选)
  • 文件需要使用绝对路径,否则提示'Read-only file system'
  • 需要联网使用(内网或存在屏蔽时提示获取一场Failed  to connect to /...用户校验失败
  • 重命名图片文件后,相册中不可见,文件管理器中可见。
  • picture2Gallery将新建图片副本,并按时间戳命名。(不更新源)
  • 将图片a重命名后再重命名恢复为a。如果在一次运行中连续操作,不影响;如果非连续操作,则图片在相册中不可见,文件管理器中可见。
  • 重命名操作不影响linux命令ls -l中查看到的属性信息。
  • 强制刷新图库 _ 按键精灵手机版 - 按键精灵论坛 (anjian.com)找到更新/刷新相册的广播方法。
  • linux命令which xx,可查看xx所在路径。如which am->/system/bin/am
  • os.execute返回error code/exit status(退出状态码)。
    Unix/Linux中值的范围为0~255,超出此范围,需要按255取模(如32512%255=127、512%255=2)。
    如127为命令没有找到。
  • 参考(linux)unix system errors, Linux 操作系统错误(Linux System Errors)中英文对照_绯浅yousa的笔记-CSDN博客_linux system 错误码
  • Android测试--adb push媒体文件到设备中并更新图库 - 简书 (jianshu.com)中使用的路径形式为
    file:///storage/emulated/0/sdcard/DCMI/...
    而非file:///sdcard/../sdcard/..
    其中android.intent.action.MEDIA_MOUNTED是常量值(用于命令行)。
  • 命令参见:在命令行中通过adb shell am broadcast发送广播通知以及Android的常用adb命令 - 编程小爬虫 - 博客园 (cnblogs.com)
  • 不同系统下,不同意图可能权限不同。
    参见【Android】not allowed to send broadcast android.intent.action.MEDIA_MOUNTED_大圣代的技术专栏-CSDN博客
    其中,如Android4.4中MEDIA_MOUNTED会Permission Denial: not allowed to send broadcast,需用ACTION_MEDIA_SCANNER_SCAN_FILE。
  • 和操作系统相关(华为、三星)。如区分路径/storage/emulated/0/com->/storage/emulated/0/Android/data/com
    Android 保存图片到系统图库并通知相册刷新在部分手机的相册里无法查看的问题_LIUW的博客-CSDN博客
    适配 Android10 内部存储图片显示问题_不要忘记,你还有生活。-CSDN博客
    当前测试/storage/emulated/0/=/sdcard/(可以被cd到)。
    MediaStore.Images.Media.insertImageMediaScannerConnection.scanFile
  • 需要使用io.open(..,'r+'),不可'w+'、'a+'(不能读,不能写..)。
  • R.text的正则不同于Lua(听说是java),转义符为\,但\是Lua字符串的转义符,需要使用\\)\)%))。
  • ui.cache=true/false,缓存;ui.time=second,超时自动确认;ui.name+updateUI(ui),动态更新(线程阻塞的对话框)。
  • 控件的默认值,不可通过关联的全局变量指定。(测试了radio,在show(ui)前,设置了view.id对应全局变量的值)
  • 单选/多选的默认值使用'*'起头指定。(单选中,若存在多个,最后一处生效)
  • path仅有1级时会失败/找不到。如R.path'/FrameLayout'
  • 节点崩溃,重启节点提示开启无障碍服务,但开启后无果,仍重复提示。可以尝试‘强行停止’节点精灵(而非从最近任务中移除,或重启手机)
  • 协程(coroutine.wrap/coroutine.create)支持有问题。
    --1:
    a=coroutine.wrap(function() print'1' end)
    print'2'--"Invalid method call. No such method."
    --2:
    coroutine.wrap(function() print'3' end)()
    print'4'--"-1",后续代码终止
    --3:
    require'anyModule'--引用任何非标准库,甚至空文件,都会导致后续失败
    coroutine.wrap(function()print'0'end)()
  • 开启系统日志后,日志输出窗口会显示当前搜索/查找的检索规则结果
    检索规则置于{}中,结果位于其后新行,置于[]中。
    结果可能为空——[]
  • 异常记录:节点“查View树”(不涉及运行脚本)(http://192.168.43.1:9090/dump),(除功能按钮)正文为空(连基本的系统的通知栏都无)
    (“图色助手”,脚本find(R.name'xxx'.text'.+')正常)
    重启APP后正常(不是重启节点精灵)
    ..用一阵后节点又无法识别了..怀疑是页面元素太多(APP未清理隐藏的元素)
  • screen(1)貌似是按坐标是否在屏幕内,而非(in)visible。
    有些APP界面中元素不可见,但能被查找到,造成干扰,难以过滤。
  • 节点在手机中文件夹的路径:freespace/scripts/..。(节点的包名com.aojoy.aplug
  • 会遇到APP结构错乱,游览过的界面按RelativeLayout被打包到ViewGroup中,导致检索被干扰。
    应该以最靠后的结构层次为准。(结构)(顺序)靠即(图层)靠靠前
  • 当检索R.desc''时,结果会包含desc==''或desc~=''的项,是万能条件。
    R.text''R.type''一样。
    甚至出现了一个只有rect的结果(无text或desc)。
    以上是未指定,若要描述,需使用"^$"(id不支持正则,''id无法限制无id)。
  • 以上(空条件)检索出来可以检测到红框中的各个元素(包括一个text/desc为空的View),以及一个疑似蓝框中的元素(仅有尺寸,无type,感觉应该是WebView)

     

     

     

     貌似和mode有关,会忽略无内容(含空View)纯结构(虚拟、辅助)的节点(如FrameLayout、RelativeLayout)。

  • 使用mode(1)会看到隐藏的(上一个界面未被回收的)元素,造成干扰..

    mode(1)无助于发现path。

    貌似mode是关于能否查找隐藏节点(如前一个界面中残留的)
    screen是关于屏幕范围内外。

    节点查询会使用脚本中最后一次mode的设置。

  • 有时也想知道‘背景’,如,是不是在小程序中。(但不一定行,可能背景节点被程序刷新掉了)
  • R.A.getChild(1).hasChild(2),hasChild不会作用于getChild(1),而是仍在A上..。
  • 外部执行多线程的方法,会依次队列(等先执行的完毕再执行下一个)。
    即,某多线程内是阻塞的。
  • 3.3.11版本,多线程\callThreadFun功能异常
    文档写的是
     callThreadFun(线程标识,"方法名称",参数,返回值数量)
    但若填入返回值数量,方法甚至不会执行
    试出来的实际形参:
     callThreadFun(线程标识,"方法名称",参数)
    且不会有返回值
    即:
  • (至少)(子)线程中不能访问平级线程——getThread(otherThread,'variableName')--in thread..程序会卡死?
    对于callThreadFun,会返回没有找到索引的线程
  • (子)线程错误(如..nil)会卡住,且无提示。
  • 线程调用线程的函数,此函数无法访问其中的全局变量upvalue等变量?
  • websocketServer可能失败,需要重试server:start()(无需等待30秒超时间隔)
  • 1.webSocket Server缺少关闭/断开的方法..?
    导致,java.lang.IllegalStateException: com.aojoy.server.lua.fun.websocket.ServerImpl can only be started once.

    2.Lua对象(表)__gc在脚本return退出时不会触发(运行过程中可以触发回收)

  • 模拟器,官方示例用的雷电,需要桥接,成功设置地址,并从电脑访问节点精灵地址

    夜神模拟器( 7.0.2.1)失败(模拟器节点精灵地址未桥接出来)(且无法运行目标APP)。

  • 激活的网页编辑器中,未选择文字的复制会得到当前行的内容(正常未选择内容的复制不会生效)
  • 检索/搜索空字符串内容,需要text'^$'(不可text'');而搜索空desc,得desc''(不可desc'^$')。
    desc不支持正则?默认全匹配?

posted on 2021-10-06 18:38  萝卜L  阅读(1002)  评论(0编辑  收藏  举报