【问题标题】:nightwatch testing: .sendKeys and .keys not sending key clicks夜班测试:.sendKeys 和 .keys 不发送按键点击
【发布时间】:2015-08-04 15:09:57
【问题描述】:

我将 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()
  }
}

【问题讨论】:

  • 你是说 .sendKeys('div[id=columns]', ShowText(browser), browser.Keys.DOWN_ARROW) 应该失败吗?
  • 检查 selenium 服务器日志中显示的内容
  • 我知道 Nightwatch.js 没有 sendKeys 功能,而是 keys 功能。
  • 你知道怎么做吗?我有同样的问题

标签: testing key keypress acceptance-testing nightwatch.js


【解决方案1】:

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

 ✖ ReferenceError: ShowText is not defined

除非您在代码中的某处定义了ShowText...?
你期待ShowText(browser) 做什么?

试试:

.sendKeys('div[id=columns]', browser.Keys.DOWN_ARROW)

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

.keys(browser.Keys.DOWN_ARROW)

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

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

【讨论】:

    【解决方案2】:

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

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

    我们之所以使用上述方式,是因为 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: '' 
    },
    

    您可以轻松按上述数组中的任何键,例如“client.keys(client.Keys.ENTER);”。

    【讨论】:

    • client.api.Keys.ENTER ?
    • @galas0330,如果它非常适合您,请接受它作为答案。
    猜你喜欢
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多