### Question:
Table extends AbstractElement { public String getValueFromCell(int row, int column) { if (row < 1 || column < 1) { throw new IllegalArgumentException("Row and column must start from 1"); } List<WebElement> elements = HtmlElementUtils.locateElements(getXPathBase() + "tr"); List<WebElement> cells = elements.get(row - 1).findElements(By.xpath(". if (cells.size() > 0) { return cells.get(column - 1).getText(); } return null; } Table(String locator);  Table(String locator, String controlName);  Table(ParentTraits parent, String locator);  Table(String locator, String controlName, ParentTraits parent); synchronized int getDataStartIndex(); int getNumberOfRows(); int getNumberOfColumns(); int getRowIndex(String[] searchKeys); String getValueFromCell(int row, int column); void clickLinkInCell(int row, int column); String getXPathBase(); String getRowText(int rowIndex); void checkCheckboxInCell(int row, int column); void uncheckCheckboxInCell(int row, int column);  }### Answer:
@Test(groups = { "browser-tests" }) @WebTest public void tableTestGetCellVlaue() { Grid.driver().get(TestServerUtils.getTestEditableURL()); assertTrue(testTable.getValueFromCell(2, 2).matches("Payment"), "Validate getCellValue method"); assertTrue(testTable.getValueFromCell(3, 1).matches("Sep 9,2011"), "Validate getCellValue method"); }