我无法在Protractor中修剪结果然后传入数组。有问题的字段包含一个将形成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)
等其他字段类型类似的任务。
有人可以帮忙吗?
编辑:
将解析承诺,将两个数组与以下内容进行比较:
protractor.promise.all(browser.params.updatedValues).then(function (resolvedValues) {
console.log(resolvedValues);
browser.params.updatedValues = resolvedValues;
expect(browser.params.updatedValues).toEqual(browser.params.newValues);
});
答案 0 :(得分:2)
getAttribute()
函数以promise的形式返回值,因此为了使用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());
});
};
希望它有所帮助。