I want to read the texts of all columns of a table row. My code:
// does not work: t.getFirstVisibleRowIndex()
List<GridColumnElement> columns = t.getAllColumns();
for (int col = 0; col < columns.size(); col++) {
GridColumnElement c = columns.get(col);
String value = t.getCell(rowNumber, col).getText();
texts.put(c.getHeaderCell().getText(), value);
texts.put("#" + (col + 1), value);
}
// vaadin-grid-testbench-6.0.2.jar > GridElement.java
public int getFirstVisibleRowIndex() {
return ((Long) executeScript(
"return arguments[0]._firstVisibleIndex+arguments[0]._vidxOffset",
this)).intValue();
}
The return value of executeScript() is null. This method is not null safe.
Stacktrace:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.Long.intValue()" because the return value of "com.vaadin.flow.component.grid.testbench.GridElement.executeScript(String, Object[])" is null
at com.vaadin.flow.component.grid.testbench.GridElement.getFirstVisibleRowIndex(GridElement.java:73)
at com.vaadin.flow.component.grid.testbench.GridElement.isRowInView(GridElement.java:176)
at com.vaadin.flow.component.grid.testbench.GridElement.getCell(GridElement.java:116)
at com.vaadin.flow.component.grid.testbench.GridElement.getCell(GridElement.java:101)
Java 17 (Temurin)
Solution
If I change String value = t.getCell(rowNumber, col).getText();
to String value = t.getRow(rowNumber).getCell(c).getText();
it works. Is it a getCell(row, col) bug?