我想验证一个值,它是动态的,从一个页面检索到另一个页面。该元素上也有空间。以下是我的编码。
页 - 1
var PerAge = element(by.css("h1 > span.ng-binding")).getText();
这个元素上有空间,像这样 -> name
第 2 页 ->其他页面中显示的相同值。此元素上没有空间。
var HumAge = element(by.repeater("slide in ctrl.slides track by $index")).getText();
现在,我想验证第 2 页上的值是否相同。由于,中继器有一堆其他值,所以我使用 .toContains 来验证该值。这里的问题是,PerAge上有空间。
我检查了这个堆栈溢出问题,但它不起作用。在茉莉花中,">"应等于">"。
expect(PerAge).toContain(HumAge);
它返回以下错误
预计"Shane"将包含"Shane"。
我试了trim
,它无法识别修剪。我不能使用下面这样的.ToEqual
因为该元素还有很多其他东西。
expect(PerAge).toEqual('xA0HumAge')
如果我理解正确,您可以在第 1 页上检索一个值,如下所示:
var PerAge = element(by.css("h1 > span.ng-binding")).getText();
并在第 2 页上使用它来比较它:
var HumAge = element(by.repeater("slide in ctrl.slides track by $index")).getText()
expect(HumAge).toEqual(PerAge);
由于空格,此操作失败。
不能使用 .trim()
的原因是因为 .getText()
返回一个承诺。您首先需要解决承诺,然后才能使用 .trim()
。
例如,您可以做的是这个。如果您使用像 Babel 这样的转译器或使用都支持 Async/Await 的 TypeScript,您还可以找到代码示例。
var PerAge, HumAge;
element(by.css("h1 > span.ng-binding")).getText()
.then(function(text) {
PerAge = text.trim();
});
// Go to page 2
element(by.repeater("slide in ctrl.slides track by $index")).getText()
.then(function(text) {
HumAge = text.trim();
});
expect(HumAge).toEqual(PerAge);
// If you can use async await because you transpile with Babel or use typescript you can do this to tidy the code
// $ is the Protractor shorthand for the `css`-locator
const PerAge = (await $('h1 > span.ng-binding').getText()).trim();
const HumAge = (await $('[ng-repeater="slide in ctrl.slides track by $index"]').getText()).trim();
expect(HumAge).toEqual(PerAge);