Транспортир: element.getText() возвращает объект, а не String
У меня есть элемент, определенный как
this.clientRowName = element(by.id('CLIENT_NAME')); //page object file
Я хочу прочитать текст в этом элементе, который является "ABC", но делает: var client = page.clientRowName.getText();
возвращает объект вместо строки. Есть ли другой способ получить текст для элемента
4 ответа
getText()
возвращает обещание, вам нужноразрешить его:
page.clientRowName.getText().then(function (text) {
console.log(text);
});
Или, если вы просто хотите утвердить текст, пустьexpect()
решить обещание для вас:
expect(page.clientRowName.getText()).toEqual("ABC");
Обещания и страница документации Control Flow должны прояснить ситуацию.
Другим решением может быть использование 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);
});
Если вы в 2021 году, вы захотите прочитать этот ответ
согласно документации транспортира, .getText() возвращает обещание.
Лучший способ выполнить обещание с 2021 года - использовать ключевые слова async / await. Это заставит транспортир "заморозиться" и ждать, пока обещание не будет разрешено, прежде чем запускать следующую команду.
it('test case 1', async () => {
let text = await page.clientRowName.getText();
console.log(text);
})
.then()
также можно использовать, но используя
async/await
сделает ваш код более читаемым и легким для отладки.