Question

I got the following HTML table and I need to find the ID of the tr which contains span whose values are Action2 and Server1 and Tag2.

<table width="100%" cellspacing="0" cellpadding="0" border="0" style="table-layout:fixed;" id="rtTkFrm:recTkTabId" class="dr-table rich-table ">
    <colgroup span="8"></colgroup>
    <tbody id="rtTkFrm:recTkTabId:tb">
        <tr class="dr-subtable-row rich-subtable-row dr-subtable-firstrow rich-subtable-firstrow 0">
            <td width="2%" style="padding-left:17px;" id="rtTkFrm:recTkTabId:0:innertable:0:j_id31" class="dr-subtable-cell rich-subtable-cell ">
                <label class="CollapseRow" onclick="noOfRows(this);" id="rtTkFrm:recTkTabId:0:innertable:0:expand"></label>
            </td>
            <td style="width:20%" id="rtTkFrm:recTkTabId:0:innertable:0:TkDesc" class="dr-subtable-cell rich-subtable-cell adjacent TkDescC">
                <span title="Action1" class="adjacentSpan" id="rtTkFrm:recTkTabId:0:innertable:0:cell-">Action1</span>
            </td>
            <td style="width:22%" id="rtTkFrm:recTkTabId:0:innertable:0:tgt" class="dr-subtable-cell rich-subtable-cell adjacent tgtC">
                <span title="Server1" class="adjacentSpan">Sever1</span>
            </td>
            <td style="width:16%" id="rtTkFrm:recTkTabId:0:innertable:0:tgtDep" class="dr-subtable-cell rich-subtable-cell adjacent tgtDepC">
                <span title="Tag1" class="adjacentSpan">Tag1</span>
            </td>
        </tr>
        <tr class="dr-subtable-row rich-subtable-row dr-subtable-firstrow rich-subtable-firstrow 0">
            <td width="2%" style="padding-left:17px;" id="rtTkFrm:recTkTabId:0:innertable:0:j_id31" class="dr-subtable-cell rich-subtable-cell ">
                <label class="CollapseRow" onclick="noOfRows(this);" id="rtTkFrm:recTkTabId:0:innertable:0:expand"></label>
            </td>
            <td style="width:20%" id="rtTkFrm:recTkTabId:0:innertable:0:TkDesc" class="dr-subtable-cell rich-subtable-cell adjacent TkDescC">
                <span title="Action2" class="adjacentSpan" id="rtTkFrm:recTkTabId:0:innertable:0:cell-">Action2</span>
            </td>
            <td style="width:22%" id="rtTkFrm:recTkTabId:0:innertable:0:tgt" class="dr-subtable-cell rich-subtable-cell adjacent tgtC">
                <span title="Server1" class="adjacentSpan">Server1</span>
            </td>
            <td style="width:16%" id="rtTkFrm:recTkTabId:0:innertable:0:tgtDep" class="dr-subtable-cell rich-subtable-cell adjacent tgtDepC">
                <span title="Tag2" class="adjacentSpan">Tag2</span>
            </td>
        </tr>
                <tr class="dr-subtable-row rich-subtable-row dr-subtable-firstrow rich-subtable-firstrow 0">
            <td width="2%" style="padding-left:17px;" id="rtTkFrm:recTkTabId:0:innertable:0:j_id31" class="dr-subtable-cell rich-subtable-cell ">
                <label class="CollapseRow" onclick="noOfRows(this);" id="rtTkFrm:recTkTabId:0:innertable:0:expand"></label>
            </td>
            <td style="width:20%" id="rtTkFrm:recTkTabId:0:innertable:0:TkDesc" class="dr-subtable-cell rich-subtable-cell adjacent TkDescC">
                <span title="Action1" class="adjacentSpan" id="rtTkFrm:recTkTabId:0:innertable:0:cell-">Action1</span>
            </td>
            <td style="width:22%" id="rtTkFrm:recTkTabId:0:innertable:0:tgt" class="dr-subtable-cell rich-subtable-cell adjacent tgtC">
                <span title="Server2" class="adjacentSpan">Server2</span>
            </td>
            <td style="width:16%" id="rtTkFrm:recTkTabId:0:innertable:0:tgtDep" class="dr-subtable-cell rich-subtable-cell adjacent tgtDepC">
                <span title="Tag2" class="adjacentSpan">Tag2</span>
            </td>
        </tr>
    </tbody>
</table>

I tried following but it was not working as expected

//id('recentTaskFrm:recTaskTabId')/tbody/tr/td[descendant::span[@title='Action1' and @title='Server2' and @title='Tag2']]/@id

Was it helpful?

Solution

There are two problems:

  1. You're querying the wrong @id attribute (its rtTkFrm:recTkTabId, not recentTaskFrm:recTaskTabId).
  2. You need to search for multiple descendents with one predicate each. Your query tries to find span elements which title is 'Action1', 'Server2' and 'Tag2' at the same time.
  3. You're querying for @id attributes of table cells, not rows.

Try this query:

//table[@id='rtTkFrm:recTkTabId']/tbody/tr[
  td//span[@title="Action2"]
  and td//span[@title="Server1"]
  and td//span[@title="Tag2"]
]

OTHER TIPS

Try this: //id('recentTaskFrm:recTaskTabId')/tbody/tr/td[descendant::span[@title='Action1'] and descendant::span[@title='Server2'] and descendant::span[@title='Tag2']]/@id

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top