package com.constellio.app.ui.tools.vaadin; import java.util.ArrayList; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebDriver; import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebElement; public class TableWebElement{ private static final String CONTENT_TABLE_XPATH = "//table[@class='v-table-table']"; protected ConstellioWebDriver driver; List<TableRowWebElement> rows = new ArrayList<>(); public TableWebElement(ConstellioWebDriver driver, String tableStyleCode) { this.driver = driver; loadRows(tableStyleCode); } private void loadRows(String tableStyleCode) { ConstellioWebElement tableParentElement = driver.find(tableStyleCode); ConstellioWebElement tableElement = tableParentElement.findElement(By.xpath(CONTENT_TABLE_XPATH)); List<WebElement> trElements = tableElement.findElements(By.tagName("tr")); if(trElements.isEmpty()){ return; } for (int i = 0; i < trElements.size(); i++) { ConstellioWebElement trElement = (ConstellioWebElement) trElements.get(i); TableRowWebElement row; row = new TableRowWebElement(trElement, i); rows.add(row); } System.out.println(trElements.size()); } public int countRows() { return rows.size(); } public TableRowWebElement getRow(int index) { TableRowWebElement row; if (rows.size() > index) { row = rows.get(index); } else { row = null; } return row; } public static class TableRowWebElement { WebElement trElement; int index; private List<WebElement> columnElements = new ArrayList<>(); public TableRowWebElement(ConstellioWebElement trElement, int index) { trElement.scrollIntoView(); this.trElement = trElement.getAdaptedElement(); this.index = index; columnElements = trElement.findElements(By.tagName("td")); } public String getValueInColumn(int index) { return getComponentInColumn(index).getText(); } public WebElement getComponentInColumn(int index) { return columnElements.get(index); } public int getIndex() { return index; } } }