web-dev-qa-db-fra.com

Cypress: définir la valeur d'attribut

Je viens de commencer à explorer Cypress et j'ai rencontré un tel problème: est-il possible de sélectionner un attribut concret et de changer sa valeur comme dans Selenium à l'aide de JavascriptExecutor? Par exemple, prenons ce simple morceau de code

input id="mapsearch" type="textbox" class="form-control" name="address" test=""

Est-il possible d'obtenir l'attribut de test et d'attribuer ma propre valeur?

12
R.Ro

Oui. Tout ce que vous pouvez faire en JavaScript est possible dans les tests Cypress. Pour le code HTML ci-dessus, vous pouvez le faire dans Cypress en utilisant .invoke() :

cy.get('input[test]')
  .invoke('attr', 'test', 'my new value')
  .should('have.attr', 'test', 'my new value')

Cypress utilise jQuery sous le capot, vous pouvez donc invoquer n'importe quelle fonction dans jQuery comme celle-ci. Vous pouvez également utiliser du JavaScript simple après avoir généré l'entrée en utilisant .then() :

cy.get('input[test]').then(function($input){
    $input[0].setAttribute('test', 'my new value')
  })
  .should('have.attr', 'test', 'my new value')
13
Jennifer Shehane