修剪不是量角器中的一个功能

时间:2016-01-19 10:03:45

标签: javascript angularjs protractor bdd

我无法在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);
});

1 个答案:

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

希望它有所帮助。