javascript - 如何将 Protractor 中的 promise 转换为 float

标签 javascript node.js selenium-webdriver protractor

我正在使用 Protractor 编写端到端测试,我想检查页面上的某些值是否计算正确。像这样非常简单的东西:

var var1 = element(by.binding('var1'));
var var2 = element(by.binding('var2'));
var var3 = element(by.binding('var3'));

expect(parseFloat(var1.getText())).toEqual(parseFloat(var2.getText()) + 
       parseFloat(var2.getText()));

但是,因为 var1、var2 和 var3 都是 promise,所以这是行不通的。

有没有办法将 promise 对象转换为字符串,以便我可以完成上述工作?

最佳答案

由于 promises 是异步的,您不能将它们转换为具有同步函数的 float 。所以,你需要解决它们。你可以这样做:

element(by.binding('var1').getText().then(function(text1) {
  element(by.binding('var2').getText().then(function (text2) {
    element(by.binding('var3').getText().then(function (text3) {
      expect(parseFloat(text1)).toEqual(parseFloat(text2) + parseFloat(text3));
    });
  });
});

关于javascript - 如何将 Protractor 中的 promise 转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213675/

相关文章:

javascript - jQuery 如果宽度小于 767 之前的代码不应该工作

javascript - 如何使用 Q.js 在循环中执行异步函数

Node.js:编写一个函数以将 spawn stdout 作为字符串返回

javascript - 如何使用 js 和 selenium 检查 Select Web 元素是否包含某些文本?

python - 如何使用带有 Python 的 Selenium Webdriver 在页面上有多个图表的选择器中获取正确的 highchart 数字?

java - 当尝试在两个浏览器中运行 Selenium Cucumber 测试时,测试仅在一个浏览器中运行

javascript - 为什么 `Temporal.Duration` 实例上的算术需要 `relativeTo` 引用日历日期?

javascript - slideToggle 无法正常工作

javascript - 如何从字符串构建 JSON 对象键

node.js - npm run cmd 失败,而命令行上的 cmd 工作