XPath :: 다음 형제 가져 오기


82

다음과 같은 HTML 구조가 있습니다. DOM 내에 이러한 태그가 많이 있기 때문에 두 번째 색상 다이제스트 요소를 추출하는 강력한 방법을 구축하려고합니다.

<table>
  <tbody>
    <tr bgcolor="#AAAAAA">
    <tr>
    <tr>
    <tr>
    <tr>
      <td>Color Digest </td>
      <td>AgArAQICGQMVBBwTIRQHIwg0GUMURAZTBWQJcwV0AoEDAQ </td>
    </tr>
    <tr>
      <td>Color Digest </td>
      <td>2,43,2,25,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td>
    </tr>
  </tbody>
</table>

디코딩 된 값이있는 두 번째 "Color Digest"td 요소를 추출하려고합니다.

다음 xpath를 작성했지만 두 번째를 얻는 대신 두 번째 td 요소를 얻지 못했습니다.

//td[text() = ' Color Digest ']/following-sibling::td[2]

그리고 그것을 td [2]에서 td [1]로 변경하면 두 요소를 모두 얻습니다.

답변:


120

'Color Digest'와 같은 td를 가진 두 번째 tr을 찾아야하며, tr에서 첫 번째 td의 다음 형제 또는 두 번째 td를 살펴 봐야합니다.

다음을 시도하십시오.

//tr[td='Color Digest'][2]/td/following-sibling::td[1]

또는

//tr[td='Color Digest'][2]/td[2]

http://www.xpathtester.com/saved/76bb0bca-1896-43b7-8312-54f924a98a89


나는 파이어 폭스에 XPath는 검사기를 사용하고 있습니다
추가 세미콜론

나는 이것을 테스트에 사용했다. xpathtester.com/saved/b452f721-556c-4e9b-9758-1910b0871d4a
james31rock

1
아마도 xpath 검사기가 작동하지 않습니까? 나는 그것을 사용한 적이 없으며 Firefox가 설치되어 있지 않습니다. 내가 가진 xpath는 첫 번째 td 요소에 'Color Digest'가있을 때 두 번째 td 요소 만 반환해야합니다.
james31rock

내 HTML을 확인하면 Space "Color Digest"가 있습니다. 내가 보낸 링크를 시도했는데 두 TD가 모두 반환되는 것을 볼 수 있습니다.
추가 세미콜론

1
아, 알겠습니다. 제 반응을 바꾸겠습니다. 죄송합니다. 'Color Digest'와 같은 td를 가진 두 번째 tr을 찾아야하며, tr에서 첫 번째 td의 다음 형제 또는 두 번째 td를 살펴 봐야합니다.
james31rock

5

xPath로 요소 목록을 식별 할 수 있습니다.

//td[text() = ' Color Digest ']/following-sibling::td[1]

이렇게하면 두 번째 요소를 의도 한대로 사용할 수있는 것보다 두 요소 목록이 제공됩니다. 예를 들면 :

List<WebElement> elements = driver.findElements(By.xpath("//td[text() = ' Color Digest ']/following-sibling::td[1]"))

이제 두 번째 요소를 원하는 요소로 사용할 수 있습니다. 바로 elements.get (1)


2

/html/body/table/tbody/tr[9]/td[1]

Chrome (사파리도 가능)에서 요소를 검사 한 다음 xpath를 가져올 태그를 마우스 오른쪽 버튼으로 클릭 한 다음 xpath를 복사하여 해당 요소를 선택할 수 있습니다.


2
그래, 나는 강력한 접근 방식을 구축하고 싶다는 것을 얻는 것보다 이러한 요소가 반복된다는 것을 알고 있습니다.
add-semi-colons
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.