I have a string with comma separated values in json file and want to convert it to a list to iterate through for loop and click on each element.Please help me on this !
testdata.json :
JavaScript
x
2
1
{"optionsList":"China - English,France - English,South Korea - English,Japan - English,Brazil - English"}
2
code:
JavaScript
1
14
14
1
var optionsLocator="//a[normalize-space()='%d']";
2
3
this.verifyOptionsList=async function(){
4
let options = await getTestData(testData, "optionsList");
5
var listOfOptions=JSON.parse(JSON.stringify(options));
6
logger.info("options list : ", listOfOptions);
7
for (let i = 0; i < listOfOptions.length; i++) {
8
var replaceOption = optionsLocator.replace("%d", listOfOptions[i]);
9
logger.info("Search Option :",replaceOption);
10
var optionLoc = element(by.xpath(replaceOption));
11
await clickElement(optionLoc);
12
}
13
}
14
output :
JavaScript
1
4
1
options list : China - English,France - English,South Korea - English,Japan - English,Brazil - English
2
3
Search Option : '//a[normalize-space()='C']'
4
Advertisement
Answer
I think the easiest way is to do it by parts, you can first remove the -
using the split
function, then it will result into an array like:
JavaScript
1
9
1
[
2
"China",
3
"English,France",
4
"English,South Korea",
5
"English,Japan",
6
"English,Brazil",
7
"English"
8
]
9
then iterating over each one of the strings and using split
you will be able to separate the strings that has ,
. resulting in something like:
JavaScript
1
25
25
1
[
2
[
3
"China"
4
],
5
[
6
"English",
7
"France"
8
],
9
[
10
"English",
11
"South Korea"
12
],
13
[
14
"English",
15
"Japan"
16
],
17
[
18
"English",
19
"Brazil"
20
],
21
[
22
"English"
23
]
24
]
25
then you can flat
this array using the function flat
of the arrays.
here you ahve a working sample:
JavaScript
1
11
11
1
const response = {
2
"optionsList": "China - English,France - English,South Korea - English,Japan - English,Brazil - English"
3
}
4
5
const options = response.optionsList
6
7
const splitByDash = options.split(' - ');
8
const splitByComa = splitByDash.map(str => str.split(","))
9
const result = splitByComa.flat();
10
11
console.log(result)