脚本应用最重要的是什么?不是UI,不是性能,而是稳定、可控!
稳.jpg
通过我自己的学习和实践,总结一些增强稳定性的方法。
操作不生效
大部分人写脚本时,操作之后通过sleep setTimeout
等延时来等待下一个环节,一旦操作不生效,脚本立马嗝屁。操作不生效应视为一种常态,有时是脚本出现玄学问题,有时是目标应用的卡顿,有时是突然弹出的一条系统提示、短信,总之是高触发概率的存在。
执行一次脚本,可以抽象为:操作 + 预期:
- 点击一个按钮(操作),进入一个页面(预期),继续点击(操作)......
- 发送一个http,等待正确的结果。
只要保证一套操作和预期顺利匹配,那个整个程序都能有很好的健壮性。
先来一个简单的保证机制代码
var pt = findImg(img1)
click(pt)
var next = findImg(img2)
while (!next) {
click(pt)
next = findImg(img2)
}
click(next)
var next2 = findImg(img3)
while (!next2) {
click(next)
next2 = findImg(img3)
}
...
我不能接受.jpeg
理想的代码是无需重复写上一步,设计成这样,add添加一次操作和预期,并能将结果传入下一步,预期不通过时重新执行操作。
add(pt => click(pt), (clickResult) => findImg(img1))
add(([clickResult, findResult]) => click(findResult), () => {})
...
最后还能指定预期通过的值,以及重试次数
// 执行操作时返回1,预期是这个结果等于2,当结果为true时放行进入下一步,不为true则重试最多10次
add(() => 1, v => v + 1 == 2, true, 10)
未完待续
网友评论