2014-01-04 2 views
1

XPath Я получил следующий HTML-таблицы, и мне нужно найти идентификатор tr, который содержит span значения которого Action2 и Server1 и Tag2.Validate несколько условий

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

Я попытался следующие, но он не работает, как ожидалось

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

ответ

0

Есть две проблемы:

  1. Вы запрашивая неправильный @id атрибут (его rtTkFrm:recTkTabId, а не recentTaskFrm:recTaskTabId).
  2. Вам нужно найти несколько потомков с одним предикатом каждый. Ваш запрос пытается найти элементы span, название которых равно «Action1», «Server2» и «Tag2» одновременно.
  3. Вы запрашиваете для @id атрибутов ячеек таблицы, а не строк.

Попробуйте этот запрос:

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

Спасибо за исправление ошибок. Я могу получить значение, указав условие и условие на уровне 'td', как вы упомянули. – pprakash

0

Попробуйте это: //id('recentTaskFrm:recTaskTabId')/tbody/tr/td[descendant::span[@title='Action1'] and descendant::span[@title='Server2'] and descendant::span[@title='Tag2']]/@id

+0

Я пытался, что и это не найдя никаких совпадений! Когда я пытаюсь только с «Action1», он возвращает несколько значений, но условие и не работает должным образом. – pprakash

 Смежные вопросы

  • Нет связанных вопросов^_^