想要将诺言值存储在数组中

时间:2019-05-21 07:20:27

标签: protractor

我想从注册页面获取所有值,并将所有值存储在数组中。我该如何在量角器中做到这一点?

var arr = new Array();  //declare array 
InputName.getAttribute("value")
         .then(function(value){
            arr[0]=value;  // want to store promise value in an array
         });
console.log(arr[0]);

1 个答案:

答案 0 :(得分:0)

如果运行代码,它将首先记录arr[0],然后解决Promise。因此,您可以在下一个Promise中访问该数组的值。像这样

var arr = new Array();  // <- this is by the way bad practice, use 'let arr = [];'
InputName.getAttribute("value")
         .then(function(value) {
            arr[0]=value;  // I would use arr.push(value)
         });
anotherInput.getAttribute("value")
         .then(function(value) {
            console.log(arr[0]); // your value should be accessible here
            arr.push(value) // push another value
         });

但是,老实说,我已经和量角器一起工作了一段时间了,我在理解承诺方面仍然有困难...这就是为什么我在测试中使用async/await的原因,所以如果我要实现类似我最终将拥有以下内容

let arr = [];
let value1 = await InputName.getAttribute("value");
arr.push(value1);
console.log(arr[0]);

清晰,整洁的代码,没有麻烦。另外,量角器团队实际上正在删除promise_manager,因此有一天在更新它时,您的代码将不再起作用。那为什么不早点切换