문제

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