我正在使用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来帮助我,但这不是我在这里要求的。它使其他一些事情变得丑陋。
答案 0 :(得分:4)
有一个名为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
答案 1 :(得分:3)
您是否尝试更换循环中的b
变量?
var b = browser.chain()
for (var i = 0; i < 10; i++) {
b = b.keyDown(editor, '\\40')
}
答案 2 :(得分:2)
你很亲密。你只需要在循环中更改b,以便正确链接。
var b = browser.chain()
for (var i = 0; i < 10; i++) {
b = b.keyDown(editor, '\\40')
}