我正在为我的角度应用编写量角器测试。 这是我的测试案例之一。 我想比较单击按钮前后的跨度值。
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。 我怎样才能做到这一点。
我们非常感谢您的帮助。 提前致谢。
答案 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, ''));
});
}