我有一个元素定义为
this.clientRowName = element(by.id('CLIENT_NAME')); //page object file
我想阅读这个元素中的文本,它是“ABC”,但正在做: var client = page.clientRowName.getText();
返回一个对象而不是一个字符串。有没有其他方法可以获取元素的文本
我有一个元素定义为
this.clientRowName = element(by.id('CLIENT_NAME')); //page object file
我想阅读这个元素中的文本,它是“ABC”,但正在做: var client = page.clientRowName.getText();
返回一个对象而不是一个字符串。有没有其他方法可以获取元素的文本
getText()
返回一个 promise,你需要解决它:
page.clientRowName.getText().then(function (text) {
console.log(text);
});
或者,如果您只想断言文本,让我们expect()
为您解决Promise:
expect(page.clientRowName.getText()).toEqual("ABC");
Promises 和 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);
});
我通常用 element.getAttribute('value')
根据量角器文档,.getText()返回一个Promise。
到 2021 年,处理 Promise 的最佳方法是使用 async/await 关键字。这将使量角器“冻结”并等待,直到在运行下一个命令之前解决Promise
it('test case 1', async () => {
let text = await page.clientRowName.getText();
console.log(text);
})
.then()
也可以使用,但使用async/await
将使您的代码更具可读性和更易于调试。