【问题标题】:How can i hold down a key (shift) and perform an action (click)我怎样才能按住一个键(shift)并执行一个动作(点击)
【发布时间】:2020-02-25 14:49:09
【问题描述】:

我正在尝试使用量角器测试功能,当您按住 shift 并单击一个元素时,它会添加到所选元素(与无 shift 相比)。

我的第一次尝试是这样的

    await browser.actions()
      .keyDown(protractor.Key.SHIFT)
      .mouseMove(await element(by.css('#datagrid .datagrid-wrapper tbody tr:nth-child(9) td:nth-child(1)')))
      .click()
      .perform();

这个动作正好是点击 shift 动作没有被按住。也尝试过这样的事情

await browser.actions().mouseMove(elem).keyDown(protractor.Key.SHIFT);
await elem.click();

这也不起作用。是否有一个特殊的技巧可以在点击工作时按住一个键? 或者,一般的转变可能存在一些问题?

【问题讨论】:

标签: javascript protractor


【解决方案1】:

试试下面的选项

await browser.actions().sendKeys(protractor.Key.SHIFT).perform().then(async () =>{
await browser.actions().mouseMove(await element(by.css('#datagrid .datagrid-wrapper tbody tr:nth-child(9) td:nth-child(1)'))).click().perform();
});

希望对你有帮助

【讨论】:

  • 这确实有效,谢谢。最终使用了一个轻微的变体.. const elem = await element(by.css('#datagrid .datagrid-wrapper tbody tr:nth-child(9) td:nth-child(1)')); // Simulate Shift + Click await browser.actions().sendKeys(protractor.Key.SHIFT).perform().then(async () => { await elem.click(); expect(await element.all(by.css('.datagrid-row.is-selected')).count()).toEqual(4); });
  • @Tim 如果您已经在使用await,则不需要使用.then。为了简单起见,值得删除并再次尝试
  • @DublinDev 我使用.then() 来保持SHIFT 密钥。无论如何感谢您的投入。
  • @Tim .then 只是强制等待,直到您的 browser.actions().sendKeys(protractor.Key.SHIFT).perform() 承诺已经解决,您的 await 应该已经解决了这一问题。我鼓励您尝试使用它,并希望看到相同的行为const elem = await element(by.css('#datagrid .datagrid-wrapper tbody tr:nth-child(9) td:nth-child(1)')); // Simulate Shift + Click await browser.actions().sendKeys(protractor.Key.SHIFT).perform(); await elem.click(); expect(await element.all(by.css('.datagrid-row.is-selected')).count()).toEqual(4);
  • 当时是唯一适合我的方法。否则就好像班次没有下来
猜你喜欢
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
  • 2015-02-23
  • 2023-03-13
  • 2021-08-21
  • 1970-01-01
  • 2020-10-04
  • 2015-08-21
相关资源
最近更新 更多