2016-01-19 24 views
1

我无法修整量角器中的结果然后传递到数组中。问题中的字段包含一个将形成JSON对象的字符串。修剪不是量角器中的函数

我传入字段element(by.id(fieldName2)).sendKeys('{"Name":"JoeNew"}');

然后将它推入browser.params.newValues.push(element(by.id(fieldName2)).getAttribute('value'));的数组中。导致// {"Name":"JoeNew"}被存储在数组中。

我再重新加载页面,并检查该字段的内容确实是我想要的东西来存储,但由于它是JSONified它会回来为:

{ 
    "Name":"JoeNew" 
} 

要比较两个我需要trim(),以便为了比较而回到{"Name":"JoeNew"}

browser.params.updatedValues.push(trimResult(element(by.id(fieldName2)).getAttribute('value'))); 

function trimResult(toTrim) { 
    return toTrim = toTrim.trim(); 
}; 

可悲地返回Failed: toTrim.trim is not a function。然而,我可以执行类似的任务,像Date.parse(date)等其他字段类型没有问题。

任何人都可以帮忙吗?

编辑:

的承诺,决心在两个阵列具有以下比较:在量角器

​​

回答

2

getAttribute()功能承诺的形式返回值,所以为了使用trim(),您应该首先获取值,然后执行操作。下面是如何 -

browser.params.updatedValues.push(trimResult(element(by.id(fieldName2)).getAttribute('value'))); 

function trimResult(toTrim) { 
    return toTrim.then(function(val){ 
     return val.trim(); 
    }); 
}; 

编辑:要返回然而push()功能并不能trimResult()功能等的承诺。下面是关于如何推动值的样本 -

element(by.id(fieldName2)).getAttribute('value').then(function(val){ 
    browser.params.updatedValues.push(val.trim()); 
}); 

OR

trimResult(element(by.id(fieldName2)).getAttribute('value')); 

function trimResult(toTrim) { 
    toTrim.then(function(val){ 
     browser.params.updatedValues.push(val.trim()); 
    }); 
}; 

希望它能帮助。

+0

Thanks @ girish-sortur。这已经删除了Trim不被允许的量角器错误,但它实际上并没有修剪结果,仍然以扩展的形式记录它。 –

+0

感谢@DanHodson指出了这一点。这是因为push不会等待函数'trimResult()'返回promise形式的值。包含它的更新答案。 –

+0

Hi @ girish-sortur感谢您的编辑。我试图应用这两个选项。第一种不使用修剪功能,第二种不实际推入数组。我还应该解释,当我试图比较两个数组时,我解决了承诺。我现在编辑了我的原始问题以反映这一点。再次感谢您抽出宝贵时间:) –