Javascript 微调不是量角器中的功能
我无法在量角器中修剪结果,然后将其传递到数组中。该字段包含一个字符串,该字符串将形成一个JSON对象 我传入字段Javascript 微调不是量角器中的功能,javascript,angularjs,protractor,bdd,Javascript,Angularjs,Protractor,Bdd,我无法在量角器中修剪结果,然后将其传递到数组中。该字段包含一个字符串,该字符串将形成一个JSON对象 我传入字段元素(by.id(fieldName2)).sendKeys(“{”Name:“JoeNew”}”) 然后使用browser.params.newValues.push(元素(by.id(fieldName2)).getAttribute('value'))将其推入数组中。导致/{“Name”:“JoeNew”}存储在数组中 然后,我重新加载页面,并检查该字段的内容是否确实是我想要存储
元素(by.id(fieldName2)).sendKeys(“{”Name:“JoeNew”}”)代码>
然后使用browser.params.newValues.push(元素(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();
};
遗憾的是返回失败:toTrim.trim不是一个函数
。但是,我能够执行类似于其他字段类型的任务,如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);
});
量角器中的函数以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()
函数不会等待trimsult()
函数的承诺返回。下面是一个关于如何推送值的示例-
element(by.id(fieldName2)).getAttribute('value').then(function(val){
browser.params.updatedValues.push(val.trim());
});
或
希望有帮助。谢谢@girish sortur。这消除了不允许修剪的量角器错误,但它实际上并没有修剪结果,并且仍然将其记录在扩展形式中。感谢@DanHodson指出这一点。这是因为push不会等待函数trimResult()
返回承诺形式的值。更新答案,包括它。嗨@girish sortur谢谢你的编辑。我已尝试应用这两个选项。第一个函数没有使用修剪函数,第二个函数实际上没有插入到数组中。我还应该解释,当我尝试比较这两个数组时,我解决了承诺。我现在也编辑了我的原始问题,以反映这一点。再次感谢您抽出时间提供帮助:)@DanHodson我已将trim()
函数添加到缺少的值中。能否检查getAttribute()
函数是否返回有效值?另外,我认为在比较两个数组时,不需要解决承诺问题,因为数组是本地存储的,它与量角器本身无关。谢谢@girish sortur我终于有生意了!最后,我使用了您发布(接受)的原始答案,而不是使用trim,我使用了JSON.stringify()
,并使用.replace()
删除了所有多余的\\n字符。可能不是最优雅的解决方案,但我现在通过了测试!非常感谢!
trimResult(element(by.id(fieldName2)).getAttribute('value'));
function trimResult(toTrim) {
toTrim.then(function(val){
browser.params.updatedValues.push(val.trim());
});
};