У меня есть таблица на странице, и мне нужно прочитать значения из определенной ячейки в таблице. Я хочу записать эти значения в файл excel. Проблема в том, что для циклов цикла только один раз и значение записывается только для первой ячейки в excel. Я пробовал много разных циклов и искал в google, но не могу найти ответ. Пожалуйста, помогите. Вот мой код, чтобы написать, чтобы преуспеть:для циклов цикла только один раз при записи в excel
public static void setExcelFile(String Path, String SheetName) throws Exception {
try {
// Open the Excel file
FileInputStream ExcelFile = new FileInputStream(Path);
// Access the required test data sheet
ExcelWBook = new XSSFWorkbook(ExcelFile);
ExcelWSheet = ExcelWBook.getSheet(SheetName);
} catch (Exception e) {
throw (e);
}
}
Это где я пишу Excel файл
public static void setCellData(String Result, int RowNum, int ColNum) throws Exception {
try {
Row = ExcelWSheet.getRow(RowNum);
Cell = Row.getCell(ColNum, Row.RETURN_BLANK_AS_NULL);
if (Cell == null) {
Cell = Row.createCell(ColNum);
Cell.setCellValue(Result);
} else {
Cell.setCellValue(Result);
}
// Constant variables Test Data path and Test Data file name
FileOutputStream fileOut = new FileOutputStream(Constant.Path_TestData + Constant.File_TestData);
ExcelWBook.write(fileOut);
fileOut.flush();
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
and here is my loop
//
ExcelUtils.setExcelFile(Constant.Path_TestData + Constant.File_TestData, "Item_Selection");
List<WebElement> li = driver.findElements(By.cssSelector("#offerVersionSkuListTable>table:nth-child(2)>tbody>tr>td#regularCost"));
for (int j = 0; j<li.size(); j++) {
String cellValue = li.get(j).getText();
List<String> valueList = new ArrayList<String>();
valueList.add(cellValue);
for (int m = 0; m<valueList.size(); m++) {
int temp = row;
ExcelUtils.setCellData(valueList.get(m), temp, Constant.Col_TblRegCost);
temp++;
}
}
Ошибка Я получаю это: org.openqa.selenium.StaleElementReferenceException: не Element в кэше - возможно, страница изменилась, поскольку он был посмотрел
После дальнейшего исследования я обнаружил, что если я удалить ExcelUtils.setCellData (valueList.get (м), температура, Constant.Col_TblRegCost);
Петля проходит успешно и правильно печатает значения из таблицы, но мне нужно написать эти значения, чтобы преуспеть. Кажется, что после написания первого значения в excel, для циклов петли снова, но не пишет ничего, чтобы превзойти второй раз. Можете ли вы помочь мне выяснить, почему?
Где код для чтения данных со страницы? – Rehman
Использование списка Я в основном получаю 2 ячейки под столбцом, которые я хочу. Затем я использую for loop для получения значения из списка и присваивания массиву, который затем используется для заполнения значения в ячейке excel. –