本文根据 Devhints / Gremlins.js 翻译。代码示例及版本范围沿用原文。原文标注更新日期:2017-10-22。
Gremlins 这是一个 JavaScript 库,通过提供随机的用户输入(点击、滚动等)来执行“猴子测试”(monkey-testing)。
示例
简单示例
<script src='https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js'></script>
<script>
gremlins.createHorde().unleash()
</script>
自定义小怪物 (Gremlins)
gremlins.createHorde()
.allGremlins()
.gremlin(function () {
document.activeElement.blur()
})
按固定时间间隔执行指定的函数。
完整示例
gremlins.createHorde()
.gremlin(gremlins.species.formFiller())
.gremlin(gremlins.species.clicker()
.clickTypes(['click'])
.canClick(element => { ··· })
.showAction((x, y) => { ··· }))
.gremlin(gremlins.species.scroller())
.mogwai(gremlins.mogwais.alert())
.mogwai(gremlins.mogwais.fps())
.mogwai(gremlins.mogwais.gizmo().maxErrors(2))
.unleash()
默认情况下,所有小怪物 (Gremlins) 和莫格莱 (Mogwais) 种类都会被加入到“大军” (horde) 中。若要自定义小怪物,请按此方式操作。
参见: 指定小怪物
Hook 钩子
之前与之后
gremlins.createHorde()
.before(function () {
this.log('sync')
console.profile('gremlins')
})
.after(function () {
this.log('done')
console.profileEnd()
})
异步
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('async')
done()
}, 500)
})