我应该分配一个变量或返回变量从量角器中的元素的getText()承诺

问题描述:

我有一个用例,我应该使用承诺获得webElement文本,然后我需要提取字符串的一部分进一步执行。我应该分配一个变量或返回变量从量角器中的元素的getText()承诺

应该使用顶部还是底部示例?

var id = element(by.binding('smsDetails.message')).getText().then(function(message){ 
 
    var messageArray = msg.split("\n"); 
 
    var indexPosition = messageArray[0].indexOf("ID"); 
 
    id = messageArray[0].substr(indexPosition + 5, 10); 
 
    return id; 
 
});
var id; 
 
element(by.binding('smsDetails.message')).getText().then(function(message){ 
 
    var messageArray = msg.split("\n"); 
 
    var indexPosition = messageArray[0].indexOf("ID"); 
 
    id = messageArray[0].substr(indexPosition + 5, 10); 
 
});

你必须采取的值(字符串)是getText()函数返回。所以你的第二种方法适合做到这一点。

但警告这种方法是,因为ü不知道什么时候量角器 返回字符串值作为它的一个承诺,所以一定要等到你第一次得到的文本 值,然后在其上执行操作必要。

下面是如何 -

var id; 
element(by.binding('smsDetails.message')).getText().then(function(message){ 
    var messageArray = msg.split("\n"); 
    var indexPosition = messageArray[0].indexOf("ID"); 
    id = messageArray[0].substr(indexPosition + 5, 10); 

    //Ideal place to perform operation on text value - id 

}).then(function(){ 

    //Perform operation on text value - id 

}); 
//DONT perform operation on text value - id 

如果您仍然需要使用承诺(.then())以外的值,然后等到返回的文本,然后继续你的操作 -

var id = ''; 
browser.wait(function(){ 
    return element(by.binding('smsDetails.message')).getText().then(function(message){ 
     //Other operations 
     id = messageArray[0].substr(indexPosition + 5, 10); 
     return !!message; 
    }); 
}).then(function(){ 
    //Perform operation on text value - id 
}); 

希望它有帮助。

+0

为什么你正在使用brwoser.wait来保存进一步的值 – Vivek

+0

@Vivek我在那里提到了一条评论,如果你想使用getText()返回的承诺之外的id值,那么你应该等待为了它。有很多方法可以等待,我已经展示了其中的一种。如果您不等到承诺退回,那么您不能在承诺之外的'id'上执行操作。谢谢 –

+0

好的谢谢,任何其他的等待方法 – Vivek