Protractor: element.getText() returns an object and not String

JavascriptTestingProtractor

Javascript Problem Overview


I have an element defined as

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

I want to read the text in this element which is "ABC" but doing: var client = page.clientRowName.getText();

returns an object instead of a string. Is there any other way that I can get the text for the element

Javascript Solutions


Solution 1 - Javascript

getText() returns a promise, you need to resolve it:

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

Or, if you just want to assert the text, let expect() resolve the promise for you:

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

Promises and the Control Flow documentation page should clear things up.

Solution 2 - Javascript

Another solution may be to use 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);
});

Solution 3 - Javascript

I usually used element.getAttribute('value')

Solution 4 - Javascript

If you're in 2021, you will want to read this answer

according to protractors documentation, .getText() returns a promise.

The best way to handle a promise, as of 2021, is to use async/await keywords. This will make Protractor 'freeze' and wait, until the promise is resolved before running the next command

it('test case 1', async () => {
  let text = await page.clientRowName.getText();
  console.log(text);
})

.then() can also be used, but using async/await will make your code a lot more readable and easier to debug.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRoopali BansalView Question on Stackoverflow
Solution 1 - JavascriptalecxeView Answer on Stackoverflow
Solution 2 - JavascriptrobdonnView Answer on Stackoverflow
Solution 3 - Javascriptji-ruhView Answer on Stackoverflow
Solution 4 - JavascriptSergey PleshakovView Answer on Stackoverflow