Newer
Older

Mihai BOZ
committed
package ddsl.dcomponents.Grid;
import ddsl.dcomponents.DComponent;
import org.openqa.selenium.By;

Mihai BOZ
committed
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.PageFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Mihai BOZ
committed
import java.util.List;
public class SmallGrid extends DComponent {
private final static Logger LOG = LoggerFactory.getLogger(SmallGrid.class);

Mihai BOZ
committed
protected static final By gridHeadersLocator = By.cssSelector("table thead th");
protected static final By gridRowsLocator = By.cssSelector("table tbody tr");
private final WebElement parentElement;

Mihai BOZ
committed
public SmallGrid(WebDriver driver, WebElement parentElement) {

Mihai BOZ
committed
super(driver);
PageFactory.initElements(driver, this);

Mihai BOZ
committed
this.parentElement = parentElement;
}
public GridPagination getGridPagination() {

Mihai BOZ
committed
return new GridPagination(driver, parentElement);

Mihai BOZ
committed
public List<WebElement> getGridHeaders() {
return parentElement.findElements(gridHeadersLocator);
}
public List<WebElement> getRows() {

Mihai BOZ
committed
return parentElement.findElements(gridRowsLocator);

Mihai BOZ
committed
}
public List<WebElement> getCells(WebElement row) {
return row.findElements(By.cssSelector("td"));
public WebElement searchValueInColumn(String columnName, String value) {

Mihai BOZ
committed
wait.forXMillis(100);
Integer numOfPages = getGridPagination().getTotalPageNumber();

Mihai BOZ
committed
List<WebElement> rowHeaders = getGridHeaders();
int columnIndex = -1;
for (int i = 0; i < rowHeaders.size(); i++) {
if (rowHeaders.get(i).getText().equals(columnName)) {
columnIndex = i;
break;
}
}
if (columnIndex == -1) {
return null;
}
for (int pageNr = 1; pageNr < numOfPages + 1; pageNr++) {
List<WebElement> rows = getRows();
for (WebElement row : rows) {
List<WebElement> cells = getCells(row);
if (cells.get(columnIndex).getText().equals(value)) {
LOG.debug("[{}] found on page [{}]", value, pageNr);
return row;
}
}
getGridPagination().goToNextPage();
}
return null;
}

Mihai BOZ
committed
}