如何在 Nightwatchjs 中使用循环
How to use a loop in Nightwatchjs
老实说,我是 automation js 和 nightwatchjs 的新手,但是在 nightwatchjs 中创建循环存在问题。
任务是在元素不可见时单击按钮,单击后它可以随机变为可见。所以,我正在纠结这个问题,如何在 nightwatchjs 的代码中添加 while 循环,因为我设想如何解决这个问题是一个循环,例如:
while(check for element)
.click('[Our_Button]')
我尝试使用这个 nightwatch js while loop 但没有帮助,这是一个错误 "Error while running clickUntilNotVisible command: browser.waitUntil is not a function"
也许可以在没有循环的情况下使用更好的方法,但我没有找到任何东西。
您可以尝试使用 setInterval
和 clearInterval
、read about them here。
setInterval
接受一个函数参数和一个延迟参数,并且将在每次指定的延迟间隔过去时执行该函数。您甚至可以这样做,以便在满足您的条件时,间隔将自行清除 as described in this stack overflow answer.
使用 this 您应该能够检查您的元素并提交点击,直到它出现在您想要的任何时间间隔。请注意,如果它永远不会变得可见,这将永远不会停止执行,因此您可能还想使用 setTimeout
并有足够的延迟来清除您的间隔或使测试失败。
您可以使用 .perform() 方法,并从内部创建一个函数。像这样:
this.api.perform(function (browser, done){
while (condition) {
//code block
}
done();
})
适合我。希望这有帮助。
干杯
老实说,我是 automation js 和 nightwatchjs 的新手,但是在 nightwatchjs 中创建循环存在问题。 任务是在元素不可见时单击按钮,单击后它可以随机变为可见。所以,我正在纠结这个问题,如何在 nightwatchjs 的代码中添加 while 循环,因为我设想如何解决这个问题是一个循环,例如:
while(check for element)
.click('[Our_Button]')
我尝试使用这个 nightwatch js while loop 但没有帮助,这是一个错误 "Error while running clickUntilNotVisible command: browser.waitUntil is not a function" 也许可以在没有循环的情况下使用更好的方法,但我没有找到任何东西。
您可以尝试使用 setInterval
和 clearInterval
、read about them here。
setInterval
接受一个函数参数和一个延迟参数,并且将在每次指定的延迟间隔过去时执行该函数。您甚至可以这样做,以便在满足您的条件时,间隔将自行清除 as described in this stack overflow answer.
使用 this 您应该能够检查您的元素并提交点击,直到它出现在您想要的任何时间间隔。请注意,如果它永远不会变得可见,这将永远不会停止执行,因此您可能还想使用 setTimeout
并有足够的延迟来清除您的间隔或使测试失败。
您可以使用 .perform() 方法,并从内部创建一个函数。像这样:
this.api.perform(function (browser, done){
while (condition) {
//code block
}
done();
})
适合我。希望这有帮助。
干杯