auto.pro npm模块拓展二(使用stream来增强流程)

2019-11-20  本文已影响0人  魔力sama

脚本应用最重要的是什么?不是UI,不是性能,而是稳定、可控!


稳.jpg

通过我自己的学习和实践,总结一些增强稳定性的方法。

操作不生效

大部分人写脚本时,操作之后通过sleep setTimeout等延时来等待下一个环节,一旦操作不生效,脚本立马嗝屁。操作不生效应视为一种常态,有时是脚本出现玄学问题,有时是目标应用的卡顿,有时是突然弹出的一条系统提示、短信,总之是高触发概率的存在。

执行一次脚本,可以抽象为:操作 + 预期:

先来一个简单的保证机制代码

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)

未完待续

上一篇下一篇

猜你喜欢

热点阅读