夜视测试:.sendKeys和.keys不发送按键点击

gal*_*330 3 testing key acceptance-testing keypress nightwatch.js

我正在将node.js与Nightwatch一起使用。它工作的很好,我唯一的问题是我的当前应用程序需要通过“按”所有箭头键进行测试,并确保元素上的类名称发生更改。我无法获取sendKeys函数来实际发送按键,并且该测试通过了,而实际上不应该:P。有任何想法吗?

module.exports = {
  'chosenTest.html' : function (browser) {
      browser
      .url(path)
      .waitForelementVisible('div[id=columns]', 1000)
      .assert.containsText('div[class="choosable chosen"], 'Test 1-0')
      .sendKeys('div[id=columns]', ShowText(browser), browser.Keys.DOWN_ARROW)
      .assert.containsText('div[class="choosable chosen"]', 'Test 1-0')
      .pause(1000)
      .end()
  }
}
Run Code Online (Sandbox Code Playgroud)

nel*_*nic 7

您共享的测试不应通过。您应该看到一个错误:

 ? ReferenceError: ShowText is not defined
Run Code Online (Sandbox Code Playgroud)

除非您ShowText在代码中定义了某处...?
ShowText(browser)打算做什么?

尝试:

.sendKeys('div[id=columns]', browser.Keys.DOWN_ARROW)
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想在常规窗口上下文中发送按键:

.keys(browser.Keys.DOWN_ARROW)
Run Code Online (Sandbox Code Playgroud)

工作示例: .sendKeys('div[id=container]', browser.Keys.DOWN_ARROW)

注意:sendKeys别名setValue 请参见:/lib/api/element-commands.js#L385,因此它接受相同的参数。


Ash*_*ain 5

您可以尝试按以下方式在 nightwatch.js 中按任意键,我按 T 并且它工作得很好!!

client.keys("t", function(done) {
    client.pause(5000);
    client.expect.element('#carousel_container').to.have.css('display').which.equals('block');
});
Run Code Online (Sandbox Code Playgroud)

我们正在使用上述方式,因为 nightwatch.js Keys 在它的数组中没有任何字母命令,我已经安慰过,但我没有找到任何字母来按下它。

Keys:
{ NULL: '?',
  CANCEL: '?',
  HELP: '?',
  BACK_SPACE: '?',
  TAB: '?',
  CLEAR: '?',
  RETURN: '?',
  ENTER: '?',
  SHIFT: '?',
  CONTROL: '?',
  ALT: '?',
  PAUSE: '?',
  ESCAPE: '?',
  SPACE: '?',
  PAGEUP: '?',
  PAGEDOWN: '?',
  END: '?',
  HOME: '?',
  LEFT_ARROW: '?',
  UP_ARROW: '?',
  RIGHT_ARROW: '?',
  DOWN_ARROW: '?',
  ARROW_LEFT: '?',
  ARROW_UP: '?',
  ARROW_RIGHT: '?',
  ARROW_DOWN: '?',
  INSERT: '?',
  DELETE: '?',
  SEMICOLON: '?',
  EQUALS: '?',
  NUMPAD0: '?',
  NUMPAD1: '?',
  NUMPAD2: '?',
  NUMPAD3: '?',
  NUMPAD4: '?',
  NUMPAD5: '?',
  NUMPAD6: '?',
  NUMPAD7: '?',
  NUMPAD8: '?',
  NUMPAD9: '?',
  MULTIPLY: '?',
  ADD: '?',
  SEPARATOR: '?',
  SUBTRACT: '?',
  DECIMAL: '?',
  DIVIDE: '?',
  F1: '?',
  F2: '?',
  F3: '?',
  F4: '?',
  F5: '?',
  F6: '?',
  F7: '?',
  F8: '?',
  F9: '?',
  F10: '?',
  F11: '?',
  F12: '?',
  COMMAND: '?',
  META: '?' 
},
Run Code Online (Sandbox Code Playgroud)

您可以像“client.keys(client.Keys.ENTER);”一样轻松按下上述数组中的任意键。