Trim 不是量角器中的函数
Trim is not a function in Protractor
我无法在 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);
});
getAttribute()
function in protractor returns 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());
});
或
trimResult(element(by.id(fieldName2)).getAttribute('value'));
function trimResult(toTrim) {
toTrim.then(function(val){
browser.params.updatedValues.push(val.trim());
});
};
希望对您有所帮助。
我无法在 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);
});
getAttribute()
function in protractor returns 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());
});
或
trimResult(element(by.id(fieldName2)).getAttribute('value'));
function trimResult(toTrim) {
toTrim.then(function(val){
browser.params.updatedValues.push(val.trim());
});
};
希望对您有所帮助。