質問

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

役に立ちましたか?

解決

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"]
]

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top