1

我想验证一个值,该值是动态的并从一个页面检索到另一个页面。该元素也有空间。 以下是我的编码。如何使用茉莉花期待(检查).toContain(价值)与空间验证动态值?

页 - 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上的值是否相同。因为,中继器有一堆其他值,所以我使用.toContain来验证值。 这里的问题是,PerAge上有空间。

我检查了这个堆栈溢出问题,但它没有奏效。 Expected '> ' to equal '> ' in jasmine

expect(PerAge).toContain(HumAge); 

它返回以下预期 '谢恩' 遏制 '谢恩' 的错误

我试过trim,它不能识别修剪。 我不能像下面那样使用.ToEqual,因为元素有许多其他的东西。

expect(PerAge).toEqual('\xA0HumAge') 

回答

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);

+0

感谢。它工作得很好。 – James