我是一名有用的助手,可以为您进行翻译。
我有一个相当简单的Protractor测试,应该检查ng-repeat中一行的文本值。
这是我的HTML:
<div ng-repeat="destination in destinations">
<span>{{destination.city}}, {{destination.country}}</span>
</div>
以下是我的JS代码:
lastDestination = element.all(by.repeater('destination in destinations').row(1));
expect(lastDestination.getText()).toEqual("Madrid, Spain");
getText() 的文档 中说明了:
获取此元素的可见(即不被 CSS 隐藏)innerText,包括子元素,没有任何前导或尾随空格。
因此,我期望从行的 span 标记中返回文本,但是在运行 Protractor 测试时,对于断言,我得到以下错误:
预期 [ 'Madrid, Spain' ] 等于 'Madrid, Spain'。
getText() 似乎返回一个数组而不是字符串。
我尝试解决 getText() 的 Promise,但仍然得到相同的错误:
lastDestination = element.all(by.repeater('destination in destinations').row(1));
lastDestination.getText().then(function (text) {
expect(text).toEqual("Madrid, Spain");
});
我可以通过针对数组中的第一个值来解决这个问题:
expect(text[0]).toEqual("Madrid, Spain");
但我仍然想知道为什么这一开始就不起作用。
有什么想法吗?
更新: 在Protractor的Github页面上报告了一个类似的bug,所以可能是getText()函数没有按照预期工作。