大家好,我是公众号3分钟学堂的郭立员~
前言
界面配置文件是用来存储用户在静态界面上填写的内容,包括输入框内填写的文字,多选框是否被勾选,下拉框选了几个选项。
一、手动打开配置文件的方式
先要知道配置文件在哪里?
在测试脚本阶段,配置文件存放的路径是/sdcard/MobileAnJian/UIConfig/
在uiconfig文件夹里面包含所有脚本的界面配置文件,想要通过文件名称找到我们当前测试脚本的配置文件其实是不容易的。
我一般是看文件生成日期,每次重新预览保存界面后,都会自动更新这个文件,文件生成时间最新的那个配置文件就是我想要的。
找到这个文件后,我会把它复制到共享文件夹,然后在用文本打开这个文件,通常这个过程还是挺繁琐的,尤其对于新人不知道文件路径,还要找寻半天。
二、使用脚本打开配置文件。
TracePrint file.read("/sdcard/MobileAnJian/UIconfig/cbe5704-d9b1-40bc-8e35-436d1bd440e3")
在使用这行代码时也遇到同样的问题,就是不知道配置文件名称,因为它是一段随机的字符串(随机id),每个脚本都不一样。
为了得到这个随机字符串的名称,我找到这个目录:/sdcard/MobileAnJian/Script/
在Script文件夹内存放所有脚本的源码、附件这些文件,每个文件的命名规则是脚本名 随机字符串。
这个命名中脚本名是我们自己定义的,随机字符串(脚本id)就是我们想要的。
我的思路是这样的:
①遍历Script这个文件夹里面所有文件,得到所有文件名称
②通过脚本名筛选出我们要的文件名
③在文件名中使用正则匹配提取随机字符(脚本id)
代码如下:
Import "zm.luae"
dim name="快速读取界面配置"
dim path="/sdcard/MobileAnJian/Script/"
dim t = zm.DirScan(path, "*")
For Each k In t
If InStr(1, k, name) > 0 Then
TracePrint k
dim arr=zm.RegExMatch(k,"%((%w%w%w%w[%w%-] )%)")
TracePrint arr(0)
TracePrint file.read("/sdcard/MobileAnJian/UIconfig/"&arr(0))
Exit For
End If
Next
注意在界面点了保存按钮后,才会生成配置文件
③知识点的讲解
这里讲一下正则表达式为啥这样写
假设遍历出的文件名是这样的
/sdcard/MobileAnJian/Script/新建脚本(1)(275c85ee-c530-41ce-98ea-af9222fbd37d).mq
其中红色部分是要提取的内容
我写的正则表达式:%((%w%w%w%w[%w%-] )%)
这个表达式的思路是:
①我们想要的内容在括号里面,所以要提取括号里面的内容,由于括号属于保留字符,所以需要用%转义。
%((内容)%)
红色括号通过转义变成了普通字符串括号。
②提取内容都包含哪些类型的字符
275c85ee-c530-41ce-98ea-af9222fbd37d
通过分析可以知道这里面有字母、数字和横杠,一共3类字符串,字母和数字的混合可以用%w表达式,横杠属于保留字符,也需要用%转义%-,把它们组合成字符集[%w%-],使用这个字符集作为表达式可以匹配到所有字母、数字和横杠。
③排除脚本名中有括号的干扰
默认新建脚本的名称是“新建脚本(序号)”这种形式,如果单纯使用字符集[%w%-]进行正则匹配,会匹配到一些不想要的内容
/sdcard/MobileAnJian/Script/新建脚本(1)(275c85ee-c530-41ce-98ea-af9222fbd37d).mq
红色部分1也会被匹配出来,为了排除掉这种情况,我是通过位数进行区分,就是括号中至少有4位以上的字符串。
当然我个人的建议是重新给脚本命名,不要使用默认的新建脚本 序号形式。
这么做两个好处,一是排除括号干扰,二是排除新建脚本 序号形式重名的情况,也就是设备中可能会有多个新建脚本(1)。
四、读取到配置文件有什么用
①当脚本界面出现无法保存的情况,就可以看一下是不是有重名的界面元素。
②做多套界面配置切换或者云配置
这里就不展开讲了,感兴趣的朋友可以看我的往期文章。
=正文完=