web-dev-qa-db-fra.com

Test du rapporteur: comment définir la valeur des éléments de texte dans un formulaire de connexion?

J'écris des tests dans Protractor pour une application Angular. Je veux remplir un formulaire de connexion et le soumettre.

Comment puis-je faire ceci? Je suis arrivé jusqu'ici, mais je ne sais pas comment définir la valeur des champs e-mail et mot de passe.

describe('The dashboard', function() {
  ptor = protractor.getInstance();

  beforeEach(function() {
    ptor.get('#/dashboard');
    var email = ptor.findElement(protractor.By.model('email'));
    var password = ptor.findElement(protractor.By.model('password'));
    var submit = ptor.findElement(protractor.By.tagName('button'));
    // Fill out the form?
    submit.click();
  });

  it('has a heading', function() {
    heading = ptor.findElement(protractor.By.tagName('h1'));
    expect(heading.getText()).toEqual('My Dashboard');
  });
});
43
Richard

Juste pour le bénéfice de tous ceux qui l'ont trouvé via Google, la réponse est:

email.sendKeys('[email protected]');
password.sendKeys('mypassword');
77
Richard

vous pouvez utiliser

email.clear().sendKeys('[email protected]');
password.clear().sendKeys('mypassword');
25
shruti dalvi

En plus de shruti et Richard ,

Pour vous assurer que l'entrée est vide ou effacée, utilisez la méthode clear qui renvoie une promesse . Résolvez la promesse avec la méthode sendKeys sur votre entrée. Cela est utile si vous avez pré-rempli votre entrée avec des valeurs par défaut.

Async/Attendre:

async fillInEmail() { 
  await email.clear(); 
  email.sendKeys('[email protected]'); 
}
async fillInPassword() { 
  await password.clear(); 
  password.sendKeys('mypassword'); 
}

ES6:

email.clear().then(() => {
    email.sendKeys('[email protected]');
});

password.clear().then(() => {
    password.sendKeys('mypassword');
});

Avant ES6:

email.clear().then(function() {
    email.sendKeys('[email protected]');
});

password.clear().then(function() {
    password.sendKeys('mypassword');
});
10
desigNerd