summaryrefslogtreecommitdiffstats
path: root/testbench-api
diff options
context:
space:
mode:
Diffstat (limited to 'testbench-api')
-rw-r--r--testbench-api/src/main/java/com/vaadin/testbench/elements/GridElement.java66
1 files changed, 59 insertions, 7 deletions
diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/GridElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/GridElement.java
index f4959e1531..5970cc53a1 100644
--- a/testbench-api/src/main/java/com/vaadin/testbench/elements/GridElement.java
+++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/GridElement.java
@@ -29,8 +29,7 @@ import com.vaadin.testbench.elementsbase.ServerClass;
/**
* TestBench Element API for Grid
- *
- * @since
+ *
* @author Vaadin Ltd
*/
@ServerClass("com.vaadin.ui.Grid")
@@ -65,8 +64,8 @@ public class GridElement extends AbstractComponentElement {
}
public GridCellElement getCell(int columnIndex) {
- TestBenchElement e = (TestBenchElement) findElement(
- By.xpath("./td[" + (columnIndex + 1) + "]"));
+ TestBenchElement e = (TestBenchElement) findElement(By
+ .xpath("./td[" + (columnIndex + 1) + "]"));
return e.wrap(GridCellElement.class);
}
}
@@ -207,13 +206,66 @@ public class GridElement extends AbstractComponentElement {
* @return Header cell element with given indices.
*/
public GridCellElement getHeaderCell(int rowIndex, int colIndex) {
- return getSubPart("#header[" + rowIndex + "][" + colIndex + "]")
- .wrap(GridCellElement.class);
+ return getSubPart("#header[" + rowIndex + "][" + colIndex + "]").wrap(
+ GridCellElement.class);
+ }
+
+ /**
+ * Finds the header cell element with the given caption. If
+ * there are multiple headers with the same name, the first one is returned.
+ *
+ * @param caption
+ * The header caption
+ * @return The first header cell element with a given caption.
+ * @throws NoSuchElementException
+ * if there is no header row or no header cell with the given
+ * text.
+ */
+ public GridCellElement getHeaderCellByCaption(String caption) {
+ List<WebElement> headerRows = findElement(By.vaadin("#header"))
+ .findElements(By.xpath("./tr/th"));
+ for (WebElement header : headerRows) {
+ if (caption.equals(header.getText())) {
+ return TestBenchElement
+ .wrapElement(header, getCommandExecutor())
+ .wrap(GridCellElement.class);
+ }
+ }
+ String errorMessage = String
+ .format("There is no header cell with %s caption. ", caption);
+ throw new NoSuchElementException(errorMessage);
+ }
+
+ /**
+ * Gets the header cell element with the given caption in the given header
+ * row. If there are multiple headers with the same name, the first one is
+ * returned.
+ *
+ * @param rowIndex
+ * The index of the header row
+ * @param caption
+ * The header caption
+ * @return The first header cell element with a given caption.
+ * @throws NoSuchElementException
+ * if there is no header row or no header cell with the given
+ * text.
+ */
+ public GridCellElement getHeaderCellByCaption(int rowIndex, String caption) {
+ List<GridCellElement> headerCells = getHeaderCells(rowIndex);
+ for (GridCellElement cell : headerCells) {
+ if (caption.equals(cell.getText())) {
+ return cell;
+ }
+ }
+ String errorMessage = String.format(
+ "The row with index %d does not have header with %s caption. ",
+ rowIndex, caption);
+ throw new NoSuchElementException(errorMessage);
}
/**
* Gets footer cell element with given row and column index.
- *
+ *
* @param rowIndex
* Row index
* @param colIndex