2017-11-08 3 views
0

특정 기준 (예 : class = 'a')과 일치하는 첫 번째 형제 만 찾는 방법이 궁금합니다. 지금은 검색을 실행하면 일치하는 모든 노드를 찾습니다. 나는이 코드를 실행하면 'A는하지만 앞의 TR을 모두 발견 클래스를 가지고있는 제 1 선행 TR을 찾기 위해 노력하고 B의 모든 예를 들어일치하는 첫 번째 이전 형제를 '만'찾음

tr class = 'a' 
tr class = 'b' 
tr class = 'b' 
tr class = 'a' 
tr class = 'b' 
tr class = 'a' 
tr class = 'b' 
tr class = 'b' 
tr class = 'b' 

: 여기에 내가 무엇을 의미하는지의 예입니다 클래스 'a'가 있습니다. 또한 각 클래스 'a'아래에 다양한 클래스 'b'가 있기 때문에 tr [1]을 사용할 수 없습니다. 여기에 내가 입력하고 무엇을 :

//tr[@class='b']/preceding-sibling::tr[@class='a'] 

필요한 경우 내 실제 코드를 게시 할 수 있습니다,하지만 난이 예제가 모든 것을 말해 생각합니다.

+0

무엇을해야 올바른 출력은? – Blender

+0

문제를 이해할 수 없습니다. 컬렉션의 첫 번째를 원하십니까? 'find_element()'또는'find_elements() [1]'만 사용하면됩니다. – JeffC

+0

tr {@ class = 'a'] -> @Blender의 속성 200 + 값 목록이 있습니다. 일부는 제목 값 (클래스 'a')입니다. 모든 클래스 'b'값에 대해 어떤 클래스 'a'값을 찾을 지 알고 싶습니다. 위의 코드를 실행하면 예를 들어 클래스의 모든 값이 200에서 나옵니다. 하나를 원해. 클래스 'b'vaules의 모든 그룹에는 특정 클래스 'a'값이 있으며, 그 값은 내가 얻으려는 것입니다. 클래스 'a'값은 항상 앞에옵니다. – alace

답변

0

아마 나는 HTML이 같은 경우, 질문을 오해하지만 :

<table> 
    <tr class = 'a'> 
     <th>1</th> 
    </tr> 
    <tr class = 'b'> 
     <th>2</th> 
    </tr> 
    <tr class = 'b'> 
     <th>3</th> 
    </tr> 
    <tr class = 'a'> 
     <th>4</th> 
    </tr> 
    <tr class = 'b'> 
     <th>5</th> 
    </tr> 
    <tr class = 'a'> 
     <th>6</th> 
    </tr> 
    <tr class = 'b'> 
     <th>7</th> 
    </tr> 
    <tr class = 'b'> 
     <th>8</th> 
    </tr> 
    <tr class = 'b'> 
     <th>9</th> 
    </tr> 
</table> 

나는이 실행하면 :

elList= driver.find_elements_by_xpath("//tr[@class='b']/preceding-sibling::tr[@class='a'] ") 

print("len List: " + str(len(elList))) 

for el in elList: 
    print ("value: " + el.text) 

출력은 다음과 같습니다

len List: 3 
value: 1 
value: 4 
value: 6 
+0

이것은 정확하게 그 것이다. 그러나 내가 9를 포함한 수업에서 시작해서 얼마나 많은 tr 떨어져 있었는지 알지 못하고 6을 얻고 싶다면 어떻게해야할까요? – alace

관련 문제