1

我对 Protractor 和 Jasmine 有点陌生,我正在尝试检查我使用 getText() 获取的元素列表是否包含特定元素:

考虑以下元素

var productNameElements = element.all(by.css('.table-row')).getText();
    elementToBeSearched = element(by.css('.table-row .table-row-child(1)')).getText();

现在,由于上面的两个变量都会返回一个承诺,因此通过这样做:

expect(productNameElements).to.eventually.contain(elementToBeSearched);

会失败,而且确实会失败。

因此,我相信转换elementToBeSearched成字符串是有益的,会让我的生活更轻松。请就如何将getText()承诺转换为字符串提出解决方案。谢谢

4

3 回答 3

4

可以说元素是ele。所以你应该解决这个承诺的方式是 -

ele.getText().then(function(str){
expect(someOtherElement.getText()).toBe(str);
})

.then 为您解决了承诺。console.log(str)您可以通过在与 比较之前输入 a 来确认字符串expect。PS:expect括号内的promise会自动解析。

于 2015-02-11T07:49:25.840 回答
0

我所做的大多相似:

productNameElements = element.all(by.css('.table-row')).getText().then(function(name) { expect(productNameElements).to.eventually.contain(name); });

这似乎对我有用,因为我还使用控制台日志记录检查了“名称”的值

于 2015-02-12T08:54:24.500 回答
0

下面的代码对我有用:

let txt = (await elementToBeSearched.then()).toString();
于 2021-03-30T15:46:05.353 回答