1

I am new to selenium and I have this question where I need to loop through a table and get the values in that table

<table>
  <tr>
    <td style="width:5px">
    </td>
    <td>
      <table class="reportTable" id="Allocations">
        <tbody>
          <tr class="table_header">
            <td style="width:5px;">
              <img class="HideImage" src="Images/minus.gif" alt="Hide Details">
            </td>
            <td style="width:33%">
              Channel of Trade</td>
            <td style="width:33%">
              PILOT TRAVEL CENTE-122194-W/S - UNB Contract</td>
            <td style="width:33%">
              <span id="TruckLoading_10142602_Info" style="COLOR: white;text-decoration:underline;cursor:pointer">
Trucks loading - 0</span>
            </td>
          </tr>
          <tr>
            <td style="width:5px;">
            </td>
            <td colspan="3">
              <table rules="rows" class="reportTable" font-family="Tahoma" pagerstyle-visible="False" id="TerminalGrid" border="1">
                <tbody>
                  <tr class="productlabel2" align="left">
                    <td scope="col" style="width:5px;">
                    </td>
                    <td>
                      Product Details</td>
                  </tr>
                  <tr class="hdr2">
                    <td scope="col" style="width:5px;">
                    </td>
                    <td scope="col">
                      Fuel Type</td>
                  </tr>
                  <tr class="FuelTypeHeader">
                    <td style="width:5px;border:none" onclick="ShowHideDetails(this)">
                      <img class="HideImage" src="Images/minus.gif" alt="Hide Details" id="Fuel_Img">
                    </td>
                    <td style="border-left:none;border-right:none; padding-left:3px">
                      <table id="C_V" style="width:100%;border-collapse:collapse; border:none; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;">
                        <tbody>
                          <tr>
                            <td style="width:20em;">
                              <span>
DSL - LSD/ULSD</span>
                            </td>
                            <td style="width:60em;">
                              <span id="CVSpan">
<span style="margin-right:10px">
<span style="float:left;padding-top:3px">
Currently:</span>
                              <span style="float:left;width:6em;padding-top:2px; margin-left:5px; margin-right:5px;margin-top:2px;padding-bottom:2px; text-align:center; background-color:#00FF00;">
Available</span>
                              <span style="float:left; padding-top:3px">
<b>
30,839</b>
gallons remaining until Mon 8/1/2016 12:00:00 AM CDT</span>
                              </span>
                              </span>
                            </td>
                            <td align="right">
                            </td>
                          </tr>
                        </tbody>
                      </table>
                    </td>
                  </tr>
                  <tr style="">
                    <td style="width:5px;">
                    </td>
                    <td>
                      <table id="ProdDetails" rules="all" pagerstyle-visible="False" style="width: 100%" border="1">
                        <tbody>
                          <tr class="table_header2">
                            <th scope="col">
                              Nominated Volume</th>
                            <th scope="col">
                              Allocation Period</th>
                            <th scope="col">
                              Allocation %</th>
                            <th scope="col">
                              Allocation Start Amt</th>
                            <th scope="col">
                              Allocation Lifted</th>
                            <th scope="col">
                              Allocation Remaining</th>
                            <th scope="col">
                              GPO Allowance</th>
                            <th scope="col" class="center width8em">
                              GPO Remaining</th>
                            <th scope="col">
                              Category Status</th>
                            <th scope="col">
                              Ratability Status</th>
                            <th scope="col">
                              Next Scheduled Refresh Date</th>
                            <th scope="col">
                              Reference ID</th>
                          </tr>
                          <tr class="tablerow2">
                            <td class="right width8em">
                              41,118</td>
                            <td class="center width10em">
                              Daily</td>
                            <td class="right">
                              75%</td>
                            <td class="right">
                              30,839</td>
                            <td class="right">
                              0</td>
                            <td class="right">
                              30,839</td>
                            <td class="right">
                              0</td>
                            <td class="right width8em bold" id="GPO_Rmd">

                              0
                            </td>
                            <td class="center" style="background-color:#00FF00;">
                              Available</td>
                            <td class="center" style="background-color:#0099CC;">
                              Below Trend</td>
                            <td class="center width20em">
                              8/1/2016 12:00:00 AM CDT</td>
                            <td class="center width20emWordWrap">
                              DSL - LSD/ULSD</td>
                          </tr>
                          <tr class="tablerow2">
                            <td class="right width8em">
                              287,826</td>
                            <td class="center width10em">
                              Weekly</td>
                            <td class="right">
                              125%</td>
                            <td class="right">
                              359,783</td>
                            <td class="right">
                              114,083</td>
                            <td class="right">
                              245,700</td>
                            <td class="right">
                              0</td>
                            <td class="right width8em bold" id="GPO_Rmd">

                              0
                            </td>
                            <td class="center" style="background-color:#00FF00;">
                              Available</td>
                            <td class="center" style="background-color:#0099CC;">
                              Below Trend</td>
                            <td class="center width20em">
                              8/4/2016 12:00:00 AM CDT</td>
                            <td class="center width20emWordWrap">
                              DSL - LSD/ULSD</td>
                          </tr>
                          <tr class="tablerow2">
                            <td class="right width8em">
                              1,233,540</td>
                            <td class="center width10em">
                              Monthly</td>
                            <td class="right">
                              115%</td>
                            <td class="right">
                              1,418,571</td>
                            <td class="right">
                              1,361,264</td>
                            <td class="right">
                              57,307</td>
                            <td class="right">
                              0</td>
                            <td class="right width8em bold" id="GPO_Rmd">

                              0
                            </td>
                            <td class="center" style="background-color:#FFFF00;">
                              Low</td>
                            <td class="center" style="background-color:#00CC00;">
                              On Track</td>
                            <td class="center width20em">
                              8/1/2016 12:00:00 AM CDT</td>
                            <td class="center width20emWordWrap">
                              DSL - LSD/ULSD</td>
                          </tr>
                        </tbody>
                      </table>
                    </td>
                  </tr>
                  <tr id="GPO_Row">
                    <td style="width:5px;">
                    </td>
                    <td>
                    </td>
                  </tr>
                </tbody>
              </table>
            </td>
          </tr>
          <tr class="table_header">
            <td style="width:5px;" onclick="ShowHideDetails(this)">
              <img class="HideImage" src="Images/minus.gif" alt="Hide Details">
            </td>
            <td style="width:33%">
              Channel of Trade</td>
            <td style="width:33%">
              PILOT TRAVEL CENTE-122194-W/S - UNB Fwrd Cont</td>
            <td style="width:33%">
              <span id="TruckLoading_17049566_Info" style="COLOR: white;text-decoration:underline;cursor:pointer" onclick="GetTruckLoadingInformationJS(this,17049566);">
Trucks loading - 0</span>
            </td>
          </tr>
          <tr>
            <td style="width:5px;">
            </td>
            <td colspan="3">
              <table rules="rows" class="reportTable" font-family="Tahoma" pagerstyle-visible="False" id="TerminalGrid" border="1">
                <tbody>
                  <tr class="productlabel2" align="left">
                    <td scope="col" style="width:5px;">
                    </td>
                    <td>
                      Product Details</td>
                  </tr>
                  <tr class="hdr2">
                    <td scope="col" style="width:5px;">
                    </td>
                    <td scope="col">
                      Fuel Type</td>
                  </tr>
                  <tr class="FuelTypeHeader">
                    <td style="width:5px;border:none" onclick="ShowHideDetails(this)">
                      <img class="HideImage" src="Images/minus.gif" alt="Hide Details" id="Fuel_Img">
                    </td>
                    <td style="border-left:none;border-right:none; padding-left:3px">
                      <table id="C_V" style="width:100%;border-collapse:collapse; border:none; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;">
                        <tbody>
                          <tr>
                            <td style="width:20em;">
                              <span>
DSL - LSD/ULSD</span>
                            </td>
                            <td style="width:60em;">
                              <span id="CVSpan">
<span style="margin-right:10px">
<span style="float:left;padding-top:3px">
Currently:</span>
                              <span style="float:left;width:6em;padding-top:2px; margin-left:5px; margin-right:5px;margin-top:2px;padding-bottom:2px; text-align:center; background-color:#FF0000;">
Out</span>
                              <span style="float:left; padding-top:3px">
<b>
0</b>
gallons remaining until Mon 8/1/2016 12:00:00 AM CDT</span>
                              </span>
                              </span>
                            </td>
                            <td align="right">
                            </td>
                          </tr>
                        </tbody>
                      </table>
                    </td>
                  </tr>
                  <tr style="">
                    <td style="width:5px;">
                    </td>
                    <td>
                      <table id="ProdDetails" rules="all" pagerstyle-visible="False" style="width: 100%" border="1">
                        <tbody>
                          <tr class="table_header2">
                            <th scope="col">
                              Nominated Volume</th>
                            <th scope="col">
                              Allocation Period</th>
                            <th scope="col">
                              Allocation %</th>
                            <th scope="col">
                              Allocation Start Amt</th>
                            <th scope="col">
                              Allocation Lifted</th>
                            <th scope="col">
                              Allocation Remaining</th>
                            <th scope="col">
                              GPO Allowance</th>
                            <th scope="col" class="center width8em">
                              GPO Remaining</th>
                            <th scope="col">
                              Category Status</th>
                            <th scope="col">
                              Ratability Status</th>
                            <th scope="col">
                              Next Scheduled Refresh Date</th>
                            <th scope="col">
                              Reference ID</th>
                          </tr>
                          <tr class="tablerow2">
                            <td class="right width8em">
                              0</td>
                            <td class="center width10em">
                              Custom 1 day(s)</td>
                            <td class="right">
                              100%</td>
                            <td class="right">
                              0</td>
                            <td class="right">
                              0</td>
                            <td class="right">
                              0</td>
                            <td class="right">
                              0</td>
                            <td class="right width8em bold" id="GPO_Rmd">

                              0
                            </td>
                            <td class="center" style="background-color:#FF0000;">
                              Out</td>
                            <td class="center" style="background-color:#0099CC;">
                              Below Trend</td>
                            <td class="center width20em">
                              8/1/2016 12:00:00 AM CDT</td>
                            <td class="center width20emWordWrap">
                              MERC-DSL</td>
                          </tr>
                        </tbody>
                      </table>
                    </td>
                  </tr>
                  <tr id="GPO_Row">
                    <td style="width:5px;">
                    </td>
                    <td>
                    </td>
                  </tr>
                </tbody>
              </table>
            </td>
          </tr>
        </tbody>
      </table>
    </td>
  </tr>
</table>

I wanted to know how to loop the table so i can get a contracts that's the " PILOT TRAVEL CENTE-122194-W/S - UNB Contract","PILOT TRAVEL CENTE-122194-W/S - UNB Fwrd Cont" and "UNB Spot" along with the data of the table also. Thanks in advance.

3
  • What did you try yourself?? And what was the result?? Commented Jul 31, 2016 at 7:33
  • i tried to loop the table but the i was getting the contract with the first 3 records and also the contract was being added to the 4th row also. i wanted to get the first contract for the first 3 row oly and not for the 4th row Commented Jul 31, 2016 at 7:35
  • Could you share which have you tried already as well?? Commented Jul 31, 2016 at 7:40

1 Answer 1

4

Ok you didn't say nothing about the language you use so i will give you example in C#

//Init table element (in this case by tag name but better chose by id or Name)
IWebElement tableElement = driver.FindElement(By.TagName("table"));

//Init TR elements from table we found into list
IList<IWebElement> trCollection = tableElement.FindElements(By.TagName("tr"));
//define TD elements collection.
IList<IWebElement> tdCollection;

//loop every row in the table and init the columns to list
foreach(IWebElement element in trCollection)
{
   tdCollection = element.FindElements(By.TagName("td"));

   //now in the List you have all the columns of the row
   string column1 = tdCollection[0].Text;
   string column2 = tdCollection[1].Text;
   ...
}

if you use other language just change the syntax the logic is the same.

Sign up to request clarification or add additional context in comments.

6 Comments

I am using same logic given by you but getting element = null
I am getting tr count perfect. i.e 10. But issue is with only element.
in foreach you get the element = null ?
I have copied your code that's it. just might variable names are diff.
The finds the first generic table and reports back the elements in there. It's not bad, but it doesn't explain how to loop through a specific table with N number of TR elements. It's a start. More programming will be necessary. I was both encouraged and disappointed by this answer.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.