Javascript 如何按住键(shift)并执行操作(单击)

Javascript 如何按住键(shift)并执行操作(单击),javascript,protractor,Javascript,Protractor,我正在尝试使用量角器测试功能,当您按住shift键并单击某个元素时,它会添加到选定的元素中(与不按住shift键相比) 我的第一次尝试是这样 wait browser.actions() .keyDown(量角器、键、移位) .mouseMove(wait元素(by.css('#datagrid.datagrid wrapper tbody tr:nth child(9)td:nth child(1))) 。单击() .perform(); 当换档操作未被按下时,此操作将完全起作用。我也尝试过

我正在尝试使用量角器测试功能,当您按住shift键并单击某个元素时,它会添加到选定的元素中(与不按住shift键相比)

我的第一次尝试是这样

wait browser.actions()
.keyDown(量角器、键、移位)
.mouseMove(wait元素(by.css('#datagrid.datagrid wrapper tbody tr:nth child(9)td:nth child(1)))
。单击()
.perform();
当换档操作未被按下时,此操作将完全起作用。我也尝试过这样的事情

await browser.actions().mouseMove(elem).keyDown(protractor.Key.SHIFT);
await elem.click();
这也不起作用。在单击“工作”时按住键是否有特殊的技巧? 或者换档总的来说有问题?

试试下面的选项

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();
});

希望它能帮助您

在我看来,您可能应该使用
.sendKeys()
来代替
.keyDown()
这确实有效,谢谢。最终使用了一种轻微的变体
const elem=await元素(by.css('#datagrid.datagrid wrapper tbody tr:nth child(9)td:nth child(1)');//模拟Shift+单击Wait browser.actions().sendKeys(progrator.Key.Shift).perform().then(异步()=>{Wait elem.Click();expect(Wait element.all(by.css('.datagrid row.is selected')).count()).toEqual(4);})
@Tim不需要使用
。然后,当您已经在使用
时,等待
。这将是值得删除,并再次尝试为simplicity@DublinDev我使用了
.then()
来保持按住
SHIFT
键。无论如何,感谢您的输入。@Tim
。然后
只需执行一个等待,直到您的
浏览器.actions().sendKeys(gragrator.Key.SHIFT).perform()
承诺已解决了哪些问题,您的
wait
应该解决这些问题。我鼓励您尝试使用它,并希望看到相同的行为
const elem=await元素(by.css('#datagrid.datagrid wrapper tbody tr:nth child(9)td:nth child(1));//模拟Shift并单击wait browser.actions().sendKeys(dragrator.Key.Shift).perform();等待元素。单击();expect(wait element.all(by.css('.datagrid row.is selected'))).count()).toEqual(4)然后是唯一的方式,它将每一个工作为我。否则,就好像班次没有停下来