我想验证一个值,该值是动态的,并从一个页面检索到另一个页面。那个元素也有空间。 以下是我的编码。
Page - 1
var PerAge = element(by.css("h1 > span.ng-binding")).getText();
此元素上有空格,如下所示 - > name
Page-2 - >在另一页中显示相同的值。这个元素没有空间。
var HumAge = element(by.repeater("slide in ctrl.slides track by $index")).getText();
现在,我想验证第2页上的值是否相同。因为,转发器有许多其他值,所以我使用.toContain来验证值。 这里的问题是,PerAge上面有空间。
我检查了这个堆栈溢出问题,但它没有用。 Expected '> ' to equal '> ' in jasmine
expect(PerAge).toContain(HumAge);
返回错误
预计'Shane'包含'Shane'。
我试过trim
,它无法识别修剪。
我不能像下面那样使用.ToEqual
因为元素还有很多其他东西。
expect(PerAge).toEqual('\xA0HumAge')
答案 0 :(得分:1)
如果我理解正确,您可以在第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);