如何使用jasmine expect(check).toContain(value)用空格验证动态值?

时间:2017-06-16 01:18:58

标签: user-interface selenium-webdriver protractor ui-automation

我想验证一个值,该值是动态的,并从一个页面检索到另一个页面。那个元素也有空间。 以下是我的编码。

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

1 个答案:

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