量角器:从字符串中删除特殊字符

时间:2018-08-14 20:55:12

标签: angular protractor

我正在为我的角度应用编写量角器测试。 这是我的测试案例之一。 我想比较单击按钮前后的跨度值。

it('Compare the dollar values', function () {
            var a = mypage.a.getText();
            mypage.clickBtnUS();
            expect(toNumber(mypage.a.getText())).toEqual(a * 
              mypage.fxRate.getText());
    });

mypage.a 是一个跨度,该跨度以格式显示美元金额- $ 643,584 。我想 在数字转换之前从此字符串中删除特殊字符,例如$和, 。不删除$和,将导致数值转换后产生NaN。 我怎样才能做到这一点。

我们非常感谢您的帮助。 提前致谢。

3 个答案:

答案 0 :(得分:1)

只需通过string.replace使用正则表达式:mypage.a.getText().replace(/\$|,/g, '')

答案 1 :(得分:1)

如果您使用Node 7或更高版本,则可以使用JavaScript本机Promise.all API来避免嵌套then

it('Compare the dollar values', function () {
    Promise.all([
        mypage.a.getText(),
        mypage.clickBtnUS(),
        mypage.a.getText(),
        mypage.fxRate.getText()
    ]).then(function(data){
        var beforeVal = data[0];
        var afterVal = data[2];
        var fRate = data[3];

        return expect(toNumber(afterVal)).toEqual(beforeVal * fRate);
    });
});

答案 2 :(得分:0)

所以,答案是

 Promise.all([
                    mypage.a.getText(),
                    mypage.fxRate.getText(),
                    mypage.clickBtnUS(),
                    mypage.a.getText(),
                ]).then(function(data){
                    var beforeVal = data[0];
                    var afterVal = data[3];
                    var fRate = data[1];
                    expect(toNumber(afterVal)).toEqual(toNumber(beforeVal) * 
                 toNumber(fRate));
                });

我在toNumber函数内部使用了replace函数

function toNumber(promiseOrValue) {
        // if it is not a promise, then convert a value
        if (!protractor.promise.isPromise(promiseOrValue)) {
            return parseFloat(promiseOrValue.replace(/[^0-9.]/g, ''));
        }
        // if promise - convert result to number
        return promiseOrValue.then(function (stringNumber) {
            return parseFloat(stringNumber.replace(/[^0-9.]/g, ''));
        });
    }