Most common Challenge Automation tester face during iterating through Table and list. they often want to find some value from the table cell or list and want to perform action on the same value or find corresponding other element in the same block and perform action on it.
Lets start with Simple Approach to Iterate a Web Table. In this Approach we are going to iterate using TD/TR. First of all we will find the location of table then we will store all table elements in the list and finally we will put a look and iterate the Cells.
package IterateTable;
import static org.junit.Assert.*;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class IterateWebTable {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception
{
driver = new FirefoxDriver();
baseUrl = "http://Qeworks.com";
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
@Test
public void test() {
WebElement Webtable=driver.findElement(By.id("TableID")); // Replace TableID with Actual Table ID or Xpath
List<WebElement> TotalRowCount=Webtable.findElements(By.xpath("//*[@id='TableID']/tbody/tr"));
System.out.println("No. of Rows in the WebTable: "+TotalRowCount.size());
// Now we will Iterate the Table and print the Values
int RowIndex=1;
for(WebElement rowElement:TotalRowCount)
{
List<WebElement> TotalColumnCount=rowElement.findElements(By.xpath("td"));
int ColumnIndex=1;
for(WebElement colElement:TotalColumnCount)
{
System.out.println("Row "+RowIndex+" Column "+ColumnIndex+" Data "+colElement.getText());
ColumnIndex=ColumnIndex+1;
}
RowIndex=RowIndex+1;
}
}
@After
public void tearDown() throws Exception {
driver.quit();
}
}