我正在使用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

09-15 11:55