javascript - Hur man håller shift och använder piltangenter i Cypress


Jag har ett problem när jag använder Cypress type()-kommandot på det sätt jag vill.

Mitt mål

Jag vill kunna markera och ta bort text i ett textfält. Jag vill att detta görs genom att hålla nere shift-tangenten, trycka på högerpilstangenten flera gånger och sedan trycka på delete-tangenten.

Mitt försök

//hold shift and use right arrow
cy.type('{shift}{rightarrow}'.repeat(10));
//press delete
cy.type('{del}');

Svar #1

Enligt den tillgängliga informationen kan du istället för repeat använda Cypress._.times loadash-metoden. Detta kommer att köra hela skrivkommandot 10 gånger.

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

Svar #2

Elementet behöver fokus innan piltangenterna används.

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

Detta får markören att röra sig inom elementets text, men tyvärr förlänger det inte markeringen, så {del} tar bara bort ett element.

Du kan använda en intern inmatningsmetod istället för {shift}{rightarrow}, om detta passar ditt test

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

Att rensa helt

cy.get('#myinput')
  .clear()          // types {selectall}{del}

Relaterade artiklar