我需要将页面的几个文本元素存储到JSON对象,但由于异步性,我无法在量角器中执行此操作。
以下是我的代码的一个示例,它位于element.all()
:
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
内访问它。
答案 0 :(得分: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);
});
答案 1 :(得分: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);
});
应该有效