我有一个用例,我应该使用promise获取webElement文本,然后我需要提取字符串的一些部分以便进一步执行。
是否应使用顶部或底部示例?
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);
});
答案 0 :(得分:3)
您必须获取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
如果您仍需要使用promise(.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
});
希望它有所帮助。