How to store WebTable data into Hash Table | Selenium Forum
A
Avijeet Posted on 27/02/2019

I have a WebTable and i want to store all webtable values to a HashTable.I'm able to retrive all webtable value . Kindly advise how to store value into HashTable.

 

WebTable :

 

<!DOCTYPE html>
<html>
<head>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}

tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>

<table name="BookTable">
<tr>
<th>BookName</th>
<th>Author</th>
<th>Subject</th>
<th>Price</th>
</tr>
<tr>
<td>Learn Selenium</td>
<td>Amit</td>
<td>Selenium</td>
<td>300</td>
</tr>
<tr>
<td>Learn Java</td>
<td>Mukesh</td>
<td>Java</td>
<td>500</td>
</tr>
<tr>
<td>Learn JS</td>
<td>Animesh</td>
<td>Javascript</td>
<td>300</td>
</tr>
<tr>
<td>Master In Selenium</td>
<td>Mukesh</td>
<td>Selenium</td>
<td>3000</td>
</tr>
<tr>
<td>Master In Java</td>
<td>Amod</td>
<td>JAVA</td>
<td>2000</td>
</tr>
<tr>
<td>Master In JS</td>
<td>Amit</td>
<td>Javascript</td>
<td>1000</td>
</tr>
</table>

</body>
</html>

 

 

Code:

 

public class webtable {

public static void main(String[] args) {


System.setProperty("webdriver.chrome.driver", "D:\\Selenium\\chromedriver.exe");

WebDriver cd=new ChromeDriver();

cd.get("file://C:/Users/User/Desktop/test.html");
cd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
String WE=cd.findElement(By.xpath("//table[@name='BookTable']/tbody/tr[3]/td[3]")).getText();

System.out.println(WE);

List<WebElement> rows = cd.findElements(By.xpath("//table[@name='BookTable']/tbody/tr"));
System.out.println("No of rows is : " + rows.size());

List<WebElement> cols = cd.findElements(By.xpath("//table[@name='BookTable']/tbody/tr[1]/td"));
System.out.println("No of cols is : " + cols.size());

String first_part = "//table[@name='BookTable']/tbody/tr[";
String second_part = "]/td[";
String third_part = "]";

for(int i=1;i<=rows.size();i++) {

                               for(int j=1;i<=cols.size()-1;j++) {

String final_xpath = first_part+i+second_part+j+third_part;

String Table_data = cd.findElement(By.xpath(final_xpath)).getText();
System.out.print(Table_data +" ");


                                                                                }
                                             }

 

                            }

        }

 


A
Ashish Thakur Replied on 28/02/2019

Well its a pure logic

You will need 2 hashtables - one inside another - hashtable1 and hashtable2

 

Like this

Row 1 of table -
hastable1.put("0",hashtable2.put("Col_Name1","Col_Val_Row1")
hastable1.put("0",hashtable2.put("Col_Name2","Col_Val_Row1")
hastable1.put("0",hashtable2.put("Col_Name3","Col_Val_Row1")
hastable1.put("0",hashtable2.put("Col_Name4","Col_Val_Row1")


Row 2 of table -
hastable1.put("1",hashtable2.put("Col_Name1","Col_Val_Row2")
hastable1.put("1",hashtable2.put("Col_Name2","Col_Val_Row2")
hastable1.put("1",hashtable2.put("Col_Name3","Col_Val_Row2")
hastable1.put("1",hashtable2.put("Col_Name4","Col_Val_Row2")

 


A
Avijeet Replied on 16/03/2019

Hi Sir, Is it possible to post complete code,please. I'm unable to understand.


A
Ashish Thakur Replied on 18/03/2019

If you read the above code carefully, you will notice that we are using the below method.

hashtable1.put("key","value")

In the above line, instead of value, we are again using the hashtable line

hashtable1.put("key","hashtable1.put("key","value")")