是否可以从数组中获取一个值,例如:
Array
(
[id] = 100917
[sid] = SM0ddb860df74148f19f57b314bfc80b39
[date_created] = 2016-02-10 12:04:08
[date_updated] = 2016-02-10 12:04:08
[date_sent] =
[to] = +996559138088
[from] = +15674434357
[body] = Confirmation code: 75ba76
[status] = queued
[direction] = outbound-api
[price] =
[price_unit] = USD
)
我需要以某种方式使用以下方法获取值“75ba76”(在确认代码字符串中):
[to] = +996559138088
当我尝试选择它时,我看到:
任何想法?.. 感谢。
答案 0 :(得分:1)
您可以使用字符串和数组操作来获取所需的值,因为默认情况下html元素中的文本存储为字符串。 filter()
函数可用于获取具有您在下面<pre>
变量中指定的数字的arrString
元素。这是怎样的 -
var arrString = "[to] = +996559138088";
var reqValue;
element.all(by.css('pre')).filter(function(ele){
return ele.getText().then(function(str){
return str.search(arrString) > -1;
});
}).getText().then(function(val){ //returns array as a string
reqValue = val.split('\n').filter(function(eachEle){return eachEle.search(/body/i)>-1}).toString().split(' ').pop();
//reqValue holds the data that you require
});
虽然代码看起来有点奇怪,但它应该可以胜任。希望它有所帮助。
答案 1 :(得分:0)
通过强大的头脑风暴,我使用下一个代码解决了问题。它可能看起来很大,但效果很好!
it("get temp password", function () {
browser.get("http://api.test.yalla.ng/sms.php?db=stena_kg");
var preElement = element.all(by.css('pre'));
var matchPhone = browser.params.phones.matchPhone;
var matchPass;
var elementIndex = 0;
parseNextElement();
function parseNextElement() {
preElement.get(elementIndex).getText().then(function (text) {
parseElementData(text);
if(!matchPass){
elementIndex++;
parseNextElement();
}else{
onMatch();
}
});
}
function parseElementData(data){
var dataArr = data.split("\n");
var phoneTxt = "";
var passTxt = "";
for(var i = 0; i<dataArr.length; i++){
var str = dataArr[i];
var splitStr = str.split(" ");
if(str.match(/\[to\]/)){
phoneTxt = splitStr[splitStr.length - 1];
}
if(str.match(/\[body\]/)){
passTxt = splitStr[splitStr.length - 1];
}
}
console.log(phoneTxt, passTxt);
if(phoneTxt == matchPhone){
matchPass = passTxt;
}
}
function onMatch(){
console.log("COMPLETE!!!", matchPass);
}
}, 600000);
});