web-dev-qa-db-fra.com

Protractor: element.getText () retourne un objet et non String

J'ai un élément défini comme 

this.clientRowName = element(by.id('CLIENT_NAME')); //page object file

Je veux lire le texte dans cet élément qui est "ABC" mais faisant: var client = page.clientRowName.getText (); 

renvoie un objet au lieu d'une chaîne. Existe-t-il un autre moyen d'obtenir le texte de l'élément?

50
Roopali Bansal

getText() renvoie une promesse, vous devez résoudre la:

page.clientRowName.getText().then(function (text) {
    console.log(text);
});

Ou, si vous souhaitez simplement affirmer le texte, laissez expect() résoudre la promesse pour vous:

expect(page.clientRowName.getText()).toEqual("ABC");

La page de documentation _ { Les promesses et le flux de contrôle } devrait clarifier les choses.

100
alecxe

Une autre solution peut être d'utiliser async/await.

class Page {
  constructor() {
    this.clientRowName = $('#CLIENT_NAME');
  }
}

/****************/

it('should console.log client name', async () => {
  const client = await Page.clientRowName.getText();
  console.log(client);
});
2
robdonn

J'ai l'habitude d'utiliser element.getAttribute('value')

0
ji-ruh