나는 테이블과 같이 있습니다셀레늄 xpath - 특정 내용이있는 테이블의 마지막 행을 선택하는 방법?
<table>
<th>
<td>Area</td><td># of errors</td>
</th>
<tr><td>school</td><td>23</td></tr>
<tr><td>student</td><td>0</td></tr>
<tr><td>school</td><td>17</td></tr>
<tr><td>student</td><td>0</td></tr>
</table>
는 어떻게 '학교'영역의 마지막 행을 선택할 수 있습니다.
최근까지 I는
//table//tr//td[contains(text(),'school')]/following::td
assert_text으로 사용되며 value
0, 즉 제로 오류.
그러나 이제는 오류가있는 행을 고려해야하지만 오류가없는 '마지막'행은 영역을 고려해야합니다.
//table//tr//td[contains(text(),'school')]/following::td
를 사용하여이 경우에 대해
는 잘못 23 오류가 첫 번째 행을 선택한다.
tr[last()]
사용하여 시도 -
//table//tr[last()]//td[contains(text(),'school')]/following::td[2]
을하지만 문제는 이번이 마지막 테이블 행을 선택한다는 것입니다 - 학생들을위한 것입니다. 나는 학교를위한 마지막 테이블 행을 원한다. (실제로는 모든 행의 마지막 테이블 행 옆에있다.) (이 여전히 '첫 번째'학교 행을 선택)
//table//td[contains(text(),'school')][last()]/following::td[2]
그러나 그것은 작동하지 않았다 :
는 또한 시도했다.
나는 하나의 학교 행, 2 개의 학교 행 및 2 개 이상의 학교 행을 설명 할 수 있어야하므로 표현을 처리 할만큼 충분히 동적이어야합니다.
이상한, 당신이 가지고있는 것은 그 때 일해야합니다. 사용중인 셀렌 버전과 API는 무엇입니까? – Ardesco
@Ardesco는 기본적으로 적절합니다. 다시 편집 된 예제의 관점에서 다음을 시도해보십시오.'(// tr [td [. = 'school']]]) [last()]/following :: tr/td [2]'. –
또는 위의 로스가 잘 작동합니다. :) – Ardesco