无法使用快捷键(热键)

Unable to use short cut keys (hotKeys)

我正在使用页面对象在 NightWatch v2.1.3 中编写 e2e 测试。 有项目列表,可以通过单击或通过其索引的热键选择项目。

示例:可以通过单击或 shift+2 选择第二个元素。

我编写了以下代码,参考了 docs,但它不起作用

browser.perform(function () {
    const actions = this.actions({async: true});
    console.log('performing hotKeys');
    actions
        .click('@option1')
        .keyDown(Keys.SHIFT)
        .keyDown(Keys.NUMPAD2)
        .keyUp(Keys.NUMPAD2)
        .keyUp(Keys.SHIFT);
});

控制台正在运行,但是当保留在 .perform 方法中时,单击和 keyUp、keyDown 不起作用。

这里需要修复什么?

  1. return 关键字很重要。 (这里是愚蠢的错误)
  2. 对普通键使用 'a'、'b'、'1'、'2'(单引号很重要,即使是数字)
  3. click 无效,内部操作 api。最好使用api click instead of userActions click。不知道为什么这个 click 被添加到新的 user-actions 下。文档中没有足够的示例,需要通过点击和试用的方法来查找。

示例:

  • 对于 SHIFT + 1
browser
  .pause(3000)
  .perform(function () {
    const actions = this.actions({ async: true });

    return actions
      .keyDown(Keys.SHIFT)
      .keyDown('1')
      .keyUp('1')
      .keyUp(Keys.SHIFT);
  })
  .pause(2000);
  • 对于 Shift + 10

(这取决于功能的开发方式,如果应用程序需要同时按下1和0)

browser
  .pause(3000)
  .perform(function () {
    const actions = this.actions({ async: true });

    return actions
      .keyDown(Keys.SHIFT)
      .keyDown('1')
      .keyUp('1')
      .keyDown('0')
      .keyUp('0')
      .keyUp(Keys.SHIFT);
  })
  .pause(2000);

// keyUp('10') wont work, it is not a valid key in your keyboard
  • 对于简单的'a'

(这取决于功能的开发方式,如果应用程序需要同时按下1和0)

browser
  .pause(3000)
  .perform(function () {
    const actions = this.actions({ async: true });

    return actions
      .keyDown('a')
      .keyUp('a')
  })
  .pause(2000);