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 +" ");
}
}
}
}
Instructor
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")
Hi Sir, Is it possible to post complete code,please. I'm unable to understand.
Instructor
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")")