我正在使用Soda在Node.js中编写Selenium测试,但是我不得不多次按下向下键。
当前代码如下:
browser
.chain
.setSpeed(200)
.session()
.open('/')
.click("id=save")
.focus(editor)
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
.keyDown(editor, '\\40')
...
我该如何干燥呢?
仅使用这样的循环不适用于此lib:
var b = browser.chain()
for (var i = 0; i < 10; i++) {
b.keyDown(editor, '\\40')
}
很棒的主意吗?
我可以在Soda中使用异步API,例如使用async-lib来帮助我,但这不是我要问的。这使其他事情变得难看。
最佳答案
有一种称为and
的方法,用于在命令链中间执行复杂的操作:
browser
.chain
.setSpeed(200)
.session()
.open('/')
.click("id=save")
.focus(editor)
.and(function (browser) {
for (var i = 0; i < 10; i++) {
browser.keyDown(editor, '\\40')
}
})
...
有关更多信息,请参见自述文件:https://github.com/learnboost/soda