脚本的本质上就是代替人完成重复的操作,本期就来介绍一个我们常见的操作,重复看广告视频。比如下图:

这是一个小程序看广告得金币的界面,图中左上角有广告的剩余时间,对于这种广告最开始我都是设置一个固定时间,比如说广告是30秒,我会设置成脚本等待35秒,留下5秒富余量,保证视频能够完整播放完。

脚本这种编写方法有两个缺点

浪费时间:有的广告可能是15秒,但是设置了35秒,至少有20秒是无效的

容易出错:比如突然来了一个45秒的广告,或者网络卡顿,视频最开始卡了好几秒钟,导致总时长超过了35秒,脚本运行错误。

既然有问题,那么我们怎么解决呢?

这里我想到的方法,就是进入广告以后获取倒计时秒数,然后把这个数字作为脚本延时的等待时间。

思路有了之后开始想办法,对于数字的获取有这么几个方法:

①自己做字库

②百度云识别

③获取节点xml(如果有xml)

这里推荐第三种方法获取界面xml,你可以用山海插件、元素命令、jsd插件等等。

以jsd插件为例,先来分析一下界面节点的属性。

通过节点查看工具我们可以看到倒计时秒数这个节点并没有id,res那里是空白的,所以不具有唯一属性,那么就要想别的办法。

这里我想到的方式是用text这个属性的正则匹配,因为倒计时这个text属性中无论时间怎么变化,但是单位“秒”是不变的,利用这个特点我们就可以使用正则匹配含有“秒”字的节点了。

dim miao=jsdvip.GetText("By.text($('(.*)秒'))")

获取到倒计时的节点文字以后,在用正则把秒的数字提取出来:

Dim shu=shanhai.RegexFind(miao,"(.-)秒")
TracePrint shu(0)

把获取到的数字当做延迟的参数使用,为了能在屏幕上看到效果,做一个倒计时的showmessage展示。

For i = 0 To shu(0)
        ShowMessage "广告剩余时间:"&shu(0)-i
        Delay 1000
 Next

需要注意一些细节,比如广告视频开头如果有一点加载时间怎么办,那么我们可以先等待几秒钟在获取广告时长,这样广告正常加载和延迟加载都可以精准的获取到剩余时间了。

对于小程序这种广告来说,时间的格式比较固定,这种写法会比较稳定,你可以去试试看。

加客服微信:qiushu0517,开通VIP下载权限!