Для каждого цикла ниже не добавляются все 6 значений из списка. Вместо этого он просто повторяет первое значение 6 раз. Также файл Json создан с теми же данными.
Примечание. Я также ссылался на эту ссылку, но не получил ожидаемый результат. Javascript каждый цикл по JSON, получая только первый элемент?
Шаги, следующие:
1. Найдите элементы tr и прочитайте данные один за другим.
2. При чтении сохраняйте эти значения также с помощью Map
3. Добавьте значения карты в массив Jason.
Ниже мой код,
public static void GetPercentageValue(String locatorType, String locatorValue) throws FileNotFoundException
{
locatorType="xpath";
locatorValue="//div[@class='content shadow']/div/child::table[1]/tbody/tr";
List<WebElement> tableRows=findTheElements(locatorType,locatorValue);
for(WebElement tablerow : tableRows)
{
Map map = new LinkedHashMap(tableRows.size());
row=row+1;
String rowKeys=tablerow.findElement(By.xpath("//div[@class='content shadow']/div/child::table[1]/tbody/tr['"+row+"']/td[1]")).getText();
String price=tablerow.findElement(By.xpath("//div[@class='content shadow']/div/child::table[1]/tbody/tr['"+row+"']//input")).getAttribute("value");
System.out.println("RowDesc & Price: "+rowKeys+" "+price);
map.put(rowKeys, price);
jArr.add(map);
}
jaObj.put("Values", jArr);
PrintWriter pWriter = new PrintWriter(mbsDataPath1);
pWriter.write(jaObj.toJSONString());
pWriter.flush();
pWriter.close();
}
Ожидаемый результат должен быть:
RowDesc & Price: <80.000 0
RowDesc & Price: 80.000-150.000 2
RowDesc & Price: 150.000-300.000 10
RowDesc & Price: 300.000-500.000 15
RowDesc & Price: >500.000 18
Фактический результат вышеприведенного кода:
RowDesc & Price: <80.000 0
RowDesc & Price: <80.000 0
RowDesc & Price: <80.000 0
RowDesc & Price: <80.000 0
RowDesc & Price: <80.000 0