汽车imei是什么意思在哪里,汽车imsi是什么意思

  

  大家好,我是微信官方账号3分钟学堂的郭莉媛。   

  

  我想介绍一种快速向脚本添加“保存”和“读取”UI配置文件的方法。我微信官方账号的老粉可能知道界面配置的保存和读取,因为我之前写过两篇相关的文章和教程。   

  

  在这篇文章教程中,我们主要关注“快”这个词。我们教你写一个模板,下次把它添加到你的脚本中。   

  

  效果显示   

  

  存储和加载配置   

  

     

  

  前面的原则介绍。回顾一下前两期的原理~   

  

  方法:通过uip命令读取界面上的内容,然后根据元素名称以键值对(json)的形式写入文本。文本存储介质用于保存和读取界面配置。   

  

  方法:读写接口配置文件,实现接口存储和加载。存储配置文件有两种情况~   

  

  【案例1】在脚本调试阶段,配置文件路径为:新版本和旧版本的关键助手路径不同。   

  

  /SD卡/mobile anjian/ui config///旧密钥助手/SD卡/mobile anjianvip/ui config//新密钥助手【案例二】脚本打包后,配置文件路径为:   

  

  /data/data/'包名'/files/script.cfg   

  

  这两类路径必须区分开来,不能混淆。   

  

  在过去,这两种方法都有各自的缺点。方法一,每个输入框、多选框、下拉框的名称都需要事先写好,不能随便修改。如果脚本已经写好了,这个方法就不适合写了。   

  

  方法2的缺点是我把配置文件写在脚本里读写,必须运行脚本后生效。保存配置点运行一次脚本没问题,但是加载配置就麻烦了。加载后,必须重启脚本才能看到界面上的内容变化。   

  

  本期原则介绍   

  

  本期的原理是结合前两期的内容,以方法1为基础,通过方法2获取元素名称和类型,解决方法1的缺陷。   

  

  下面分别说一下保存配置和读取配置。   

  

  保存界面原理   

  

  读取界面上“可修改”的内容,即不是界面配置文件中存储的所有界面元素。这一点要注意。“可修改”的内容包括:输入框的内容、多选框是否勾选、下拉框的选项。   

  

  UIP。GetAttribute('界面元素名称')   

  

  这个命令的返回值是一个键值对的表(数组),每个界面元素的键值对都是不同的。   

  

  输入框的内容   

  

  Dim ret=uip。GetAttribute('输入框1')showmessage ret '初始文本'   

  

  多选框勾选了吗?   

  

  Dim ret=uip。GetAttribute('多框1')showmessage ret' checked '   

  

  下拉框的选项号   

  

  Dim ret=uip。GetAttribute('下拉框1')showmessage ret '初始选项'   

  

  如果想了解更多,可以通过下面的代码读取接口元素的所有返回值。   

  

  功能按钮点击事件()dim ret=uip。get attribute(' interface element name ')dim json=encode . table tojson(ret)显示消息JSON结束函数   

  

  解决界面元素名称的获取问题是本文的亮点。   

  

  以前在阅读界面上的内容时,我们总是提前知道界面上所有元素的名称。比如有三个输入框,我们知道输入框1,输入框2,输入框3的名字。如果按照循环写名字比较好,可以通过循环数来拼接名字,比如输入框+序号。.   

  

  如果你打算在编写脚本之初添加保存和加载配置文件的功能,可以专门留言命名问题,但是我们在编写脚本的时候,可能会根据需要随时添加界面元素,所以这是一个很头疼的问题。   

  

  那么如何解决呢?   

  

  读取脚本自己生成的界面配置文件,当我们点击界面下方的保存按钮时,配置文件将在手机(模拟器)中生成。   

hp?k=汽车imei是什么意思在哪里,汽车imsi是什么意思2.jpg">

  


  

配置文件中保存我们想要的界面元素名称。

  


  

{"下拉框1":0,"多选框1":true,"输入框1":"你好"}

  

分析到这里,我们串联一下界面源码、界面展示内容、界面配置文件三者之间的关系,下面以输入框为例~

  


  

  

通过上图可以看到,界面上的元素名称,除了源码中有,在配置文件里面也有,那么这就为我们解决获取界面元素名称问题提供了一个新的思路,读取配置文件里面元素名称。

  


  

第一步:使用文本读取命令file.read,读取配置文件的内容,得到键值对的表。

  


  

第二步:对于一个键值对的表,想要获取它的键名,最简单的方法就是遍历数组了。

  

For Each k , v In table //table是键值对 //k是键值(key) //v是键值(value)Next

  

第三步:获取到键名也就是元素名称,还有一个问题就是,怎么区分元素的类型。

  


  

通常来说,界面元素默认的命名方式是元素类型+编号:

  

输入框1、输入框2、输入框3…多选框1、多选框2、多选框3…下拉框1、下拉框2、下拉框3…

  

如果大家都本本分分的使用这个默认名称,那也还好,但是往往大家为了能够区分每个元素的作用,会给它们修改名称。

  


  

这样一来就出问题了,当我们通过读取配置文件获取到一个元素名称,然后下一步就没法通过名称命名判断元素的类型了,到底是输入框、多选框还是下拉框。

  


  

解决这个问题我提供了另外一个思路:判断键值的类型。

  


  

读取输入框我们获取到内容是字符串类型,读取多选框我们获取的true和false的布尔值类型,读取下拉框我们获取到的是01234的数值类型。

  


  

每一个界面元素的值都有自己不同的类型,根据键值类型反推元素类型,这个确实是一个可行的思路。

  


  

当然到这里我还是有一点担忧,因为我担心界面代码区不支持山海插件的tpye命令,那么就无法获取到数据类型了,好在测试了一下可以支持。

  


  

import "shanhai.lua"Function 响应事件() Dim v=123 showmessage shanhai.type(v)End Function

  

新建一个界面加上一个按钮的点击响应事件函数,测试即可。

  


  

介绍3类返回值的写法:

  

字符串:string数值:number布尔值:Boolean

  

到这一步我们可以把名称及对应的类型获取到了,那么就差最后一步写入配置了。

  


  

③把界面上的内容存储起来。

  


  

之前的步骤已经可以把所有的元素名称及类型获取到了,之后我就可以用

  

uip.GetAttribute 命令把界面所有内容都获取一遍,并以键值对的形式存入到一个新的文件中。

  


  

这个文件的后缀可以是txt文本,cfg配置文件,甚至不写后缀都行。

  


  

文件的路径,如果是手机那就无所谓了,如果是模拟器想要实现多个模拟器共享配置文件就需要注意,必须放在共享文件夹里面,如果不想共享配置文件,就需要放到其他非共享文件夹里面。

  


  

当然不共享还有一个方法,就是文件名用imsi,imei之类的参数值,这样每个设备也不一样,即使放到共享文件夹里面配置文件也不共享的。

  

保存配置代码

  

  


  

代码中的一些细节:

  


  

①代码是脚本调试时的,它使用的是调试路径,并且那一串随机字符我模拟器里面的不是你的,必须要自己修改。

  


  

  


  

看生成文件的日期找你自己刚刚操作的界面配置文件。

  


  

②界面配置文件缺失报错机制,首次使用脚本,如果不点击保存按钮是不生成配置文件的,所以需要加一个提示信息。

  

③存储配置不是直接复制生成的配置文件,而是遍历界面上所有的元素,然后存储起来,原因是修改完界面内容,如果不点下方保存按钮,配置文件不会修改,直接复制配置文件,只能存储上次点击保存按钮时的界面内容。

  


  


  

读取配置原理
读取配置涉及到的知识点,基本保存配置一样。

  


  

第一步:读取配置文件,注意是你存储的配置,不是自动生成的配置文件,路径别写错了。

  


  

第二步:转一下table,获取到元素的键值对。

  


  

第三步:判断每一个元素的名称和值的类型,逐个修改界面元素。使用uip.SetAttribute命令。

  

读取配置代码

  


  

  


  

使用方法

  

按照我上面的讲解的内容,写好自己的模板,之后如果想给自己的脚本添加此功能,可以先在界面源码中添加两个按钮,点击响应的名称写“存储配置”和“加载配置”,然后把函数代码放到界面代码区,就可以使用了。

  


  

最后强调一点,首次使用脚本一定要先点一下自带的保存设置按钮。

相关文章