Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Angularjs量角器承诺从字符串转换为浮点?_Javascript_Angularjs_Promise_Karma Runner_Protractor - Fatal编程技术网

Javascript 将Angularjs量角器承诺从字符串转换为浮点?

Javascript 将Angularjs量角器承诺从字符串转换为浮点?,javascript,angularjs,promise,karma-runner,protractor,Javascript,Angularjs,Promise,Karma Runner,Protractor,我使用Angular.js量角器来检查网格中单元格的值。我可以得到这些值,但它们是字符串,我想用它们进行计算 当我尝试这个: ptor.findElements(protractor.By.className('ngCellText')).then(function(cells) { expect(parseFloat(cells[16].getText())).toEqual(parseFloat(cells[14].getText()) / parseFloat(cells[11].ge

我使用Angular.js量角器来检查网格中单元格的值。我可以得到这些值,但它们是字符串,我想用它们进行计算

当我尝试这个:

ptor.findElements(protractor.By.className('ngCellText')).then(function(cells) {
  expect(parseFloat(cells[16].getText())).toEqual(parseFloat(cells[14].getText()) / parseFloat(cells[11].getText()));
});
我得到错误:
期望NaN等于NaN。

我读到承诺是异步的,不能用同步函数转换它们,所以我尝试了以下方法:

element.all(by.className('ngCellText')).then(function(text1) {
  element.all(by.className('ngCellText')).then(function (text2) {
    element.all(by.className('ngCellText')).then(function (text3) {
      expect(parseFloat(text1[16].getText())).toEqual(parseFloat(text2[14].getText()) + parseFloat(text3[11].getText()));
    });
  });
});
我得到了同样的错误:
期望NaN等于NaN。


如果有人能帮我,那太好了

既然我们知道
getText()
返回一个承诺,那么试试这个:

cells[16].getText().then(function (cellValue) {
    console.log(cellValue); // This should give you '1.40'

    var floatVal = parseFloat(cellValue);
    console.log(floatVal); // This should give you 1.4

    expect(floatVal).toBe(1.4);
});

还可以使用箭头函数将其指定给变量:

var someVal = $(elem).getText().then(value => +value);

或者如果需要特定的int,请使用parseFloat()。

在第一个示例中,请尝试控制台记录单元格文本,以确保您拥有所需的正确单元格,即:
console.log(cells[16].getText())
此外,我使用稍微不同的语法按id获取元素,例如:
ptor.findElements(by.className('ngCellText'))。然后(function(cells){})
我打印了单元格,它似乎是正确的。我得到字符串“1.40”,我想把它当作一个数字。我还尝试使用ptor.syntax。我可以很好地得到字符串,但是当我使用parseFloat()时在它们上面,它们变成了NaN。嗯,很奇怪。如果你有正确的字符串,我不确定该怎么办,而parseFloat()就是解析不正确。我会尽可能多地分离所有内容。
var cell=cell[16];var cellVal=cell.getText();var cellFloat=parseFloat(cellVal)
不确定。还是不走运,谢谢你的建议。这很奇怪。cellFloat是“1.40”。如果我使用parseFloat(cellFloat),它会变成NaN。如果使用parseFloat('1.40'),它会变成1.40。实际上,当我运行expect语句时cellVal只有“1.40”。当我使用console.log时,它会打印
code{然后:[Function:then]、cancel:[Function:cancel]、isPending:[Function:isPending]}
没问题!我昨晚和今天早上才想出了一些类似的方法,所以让别人看感觉很好(我知道量角器文档非常稀少,很难找到好的信息)