量角器:element.getText()返回一个对象而不是String

时间:2015-04-06 20:13:54

标签: javascript testing protractor

我有一个定义为

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

我想阅读这个元素中的文字“ABC”,但是:     var client = page.clientRowName.getText();

返回一个对象而不是一个字符串。有没有其他方法可以获取元素的文本

4 个答案:

答案 0 :(得分:103)

getText()返回承诺,您需要解析

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

或者,如果你只是想断言文本,让expect()解决你的承诺:

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

Promises and the Control Flow文档页面应该清理一切。

答案 1 :(得分:2)

另一种解决方案可能是使用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 :(得分:1)

如果你在 2021 年,你会想阅读这个答案

根据量角器文档,.getText() 返回一个承诺。

从 2021 年开始,处理 Promise 的最佳方法是使用 async/await 关键字。这将使量角器“冻结”并等待,直到在运行下一个命令之前解决承诺

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

.then(),但使用 async/await 将使您的代码更具可读性和更易于调试。

答案 3 :(得分:0)

我通常使用element.getAttribute('value')