2017-05-05 10 views
1

ページのいくつかのテキスト要素をJSONオブジェクトに格納する必要がありますが、私は非同期性のために分度器でこれを行うことができません。ページのいくつかの要素をJSONオブジェクトに格納

var json = {}; 
e[i].element(by.css(".nome_projeto")).getText().then(function(text){ 
    json.nome = text; 
}); 
e[i].element(by.css(".nome_cliente")).getText().then(function(text){ 
    json.cliente = text; 
}); 
e[i].element(by.css('.data_fim')).getText().then(function(text){ 
    json.data = text; 
}); 
console.log(json); 
list.push(json); 

私がログインしたときしかし、私のJSONオブジェクトが定義されていない、と私は唯一then内側にアクセスすることができます:ここでは

element.all()のループ内にある自分のコードの一つのサンプルは、です。

答えて

4

あなたがprotractor.promise.all()で「一度に」複数の約束を解決することができます

protractor.promise.all([ 
    e[i].element(by.css(".nome_projeto")).getText(), 
    e[i].element(by.css(".nome_cliente")).getText(), 
    e[i].element(by.css('.data_fim')).getText() 
]).then(function (texts) { 
    var obj = {}; 

    obj.nome = texts[0]; 
    obj.cliente = texts[1]; 
    obj.data = texts[2]; 

    console.log(obj); 
}); 
2

私はイタリアの名を参照:D私たちはイタリア語で話すことができ:ところでD

を、私はあなたがそれを変更することをお勧めこのコードでは、すべての約束を管理するために:

var json = {}; 
var promises = [ 
    e[i].element(by.css(".nome_projeto")).getText(), 
    e[i].element(by.css(".nome_cliente")).getText(), 
    e[i].element(by.css('.data_fim')).getText() 
]; 
protractor.promise.all(promises).then(function(data) { 
    json.nome = data[0]; 
    json.cliente = data[1]; 
    json.data = data[2]; 
    list.push(json); 
}); 

をそれは

を動作するはずです
関連する問題