2014-05-11 2 views
1

두 번째 버튼 인 항목을 삭제하는 첫 번째 버튼을 클릭하려고합니다.xpath 선행 형제가 작동하지 않습니다.

<tr> 
    <td> 
    <div class="btn-group"> 
     <button class="btn btn btn-danger" name="delete" type="button"> 
    </div> 
    </td> 
    <td> 
    <span class="class"></span> 
    </td> 
    <td> 
    <button class="btn" name="item" type="button"> 
    </td> 
</tr> 

나는 당신의 버튼 중 어느 것도 콘텐츠를 갖고있는 것 같아요 때문에 그냥, 우리에게 예를 들어, HTML에서 버튼 텍스트를 표시하지 않는 가정거야

 
//button[contains(.,'${ITEM}')]/preceding-sibling::button[@name='delete'] 

답변

2

의 XPath.

preceding-sibling 두 버튼이 형제가 아니기 때문에 여기서는 사용할 수 없습니다. 그러나 preceding::button이이 경우에 작동해야합니다. 가장 가까운 것을 선택하기 위해 필요한 마지막에 [1]을 참고 : 다음

//button[contains(.,'${ITEM}')]/preceding::button[@name='delete'][1] 

도 작동해야하고, 조금 청소기는 내 의견에 있습니다

//tr[.//button[contains(., '${ITEM}')]]//button[@name ='delete'] 
+0

고마워요! previous :: button을 사용하면 페이지에서 발견 된 첫 번째 삭제 버튼을 선택했지만 두 번째 버튼이 잘 작동하므로 나에게 적합하지 않습니다. – jquerynoob

+0

아, 네. 'preceding ::'를 사용한다면 끝에 [1]이 필요합니다. 내 답변을 철저히 업데이트했습니다. – JLRishe

+0

'preceding :: button [1]'은 첫 번째 일치 또는 * 가장 가까운 * 일치 (즉, 마지막 일치)를 선택합니까? – jpaugh

관련 문제