如何在赛普拉斯中按住 shift 和使用箭头键

以我想要的方式使用 Cypress type() 命令时出现问题。

我的目标

我希望能够选择和删除文本字段中的文本。我希望通过按住 shift 键,多次按右箭头键,然后按 delete 键来完成此操作。

我的尝试

//hold shift and use right arrow
cy.type('{shift}{rightarrow}'.repeat(10));
//press delete
cy.type('{del}');
stack overflow How to hold shift and use arrow keys in Cypress
原文答案

答案:

作者头像

根据可用信息而不是 repeat ,您可以使用 Cypress._.times loadash 方法。这将运行整个类型命令 10 次。

Cypress._.times(10, () => {
  cy.type('{shift}{rightarrow}')
})
作者头像

在应用箭头键之前元素需要焦点,

cy.get('#myinput')
  .focus()
  .type(Cypress._.repeat('{shift}{rightarrow}', 5))
  .type('{del}')

这使光标在元素的文本中移动,但不幸的是没有扩展选择,所以 {del} 只删除一个元素。

如果这适合您的测试,您可以使用内部输入法而不是 {shift}{rightarrow}

cy.get('#myinput')
  .focus()
  .then($el => $el[0].setSelectionRange(0, 5))
  .type('{del}')

要彻底清除,

cy.get('#myinput')
  .clear()          // types {selectall}{del}
作者头像

对于其他任何人来说,我在使用 this method 和修饰符的 {release:false} 方面取得了成功。这是一些用于选择和删除上面两行的示例代码:

    cy.get("body").type("{shift}", {release: false});
    cy.get("body").type("{upArrow}{upArrow}");
    cy.get("body").type("{shift}");
    cy.get("body").type("{backspace}");