문제
그것이 가능한 셀레늄을 평가하는 모든 요소할 수 있는 경기 일정 XPath
?
예를 들어,내가 좋아하는지 여부를 평가 모든 체크 박스 이 확인 //input[type='checkbox']
--문제는 가장 쉬운 방법은 당신의 요소가 반환됩니다.
해결책
사용할 수 있습니다 getXpathCount 명령의 수를 결정하는 일치하는 요소입니다.할 수 있습을 통해 루프를 사용하여 증가 서로를 찾는 요소습니다.다음 Java(TestNG/JUnit)예 확인 확인란에 페이지를 확인:
int totalCheckboxes = session().getXpathCount("//input[@type='checkbox']").intValue();
for (int i = 1; i < totalCheckboxes+1; i++) {
assertTrue(session().isChecked("//input[@type='checkbox'][" + i + "]"));
}
다른 팁
나은 위의 접근 방식과 셀레늄었 던지는 예외는 요소를 발견되지 않습니다.추가하는 접두사 xpath=문제가 해결된 것입니다.
예
xpath=(//td[@class='cell name bold'])[1]
xpath=(//td[@class='cell name bold'])[2]
가
/descendant::input[@type='text'][1]
/descendant::input[@type='text'][2]
할 수 있습 검색 모든 입력하는 요소에서 나무입니다.그것은 작동하지 않습하려는 경우에는 구문 분석 subtree.
더 좋은 방법입니다:
(/form/div/input[@type='text'])[1]
(/form/div/input[@type='text'])[2]
는 반환 결과를#1,#2 등입니다.XPath 형식에 대해 다양한 부류입니다.
물론 당신은 또한 할 수 있는
(//input[@type='text'])[1]
이것은 매우 편리로 셀레늄만 사용하는 첫 번째 매치하고 있습으로 설정 결과는 무엇 XPath 일반적으로 반환합니다.
방법이 없 셀레늄 수 있는 평가 항목의 목록을 반환합니다.그것은 단지 그랩과 그것의 재료로습니다.
Dave 답이 최선의 대안을 찾고 계신다.
내가 하려는 정확한에서 같은 일 셀레늄 및 그 시도를 사용하여@데이브-사냥's 를 들어 하지만 그것은 잘못된 방법을 찾기에 대한 개별 요소에서 컬렉션입니다.
다음 예제를 살펴보겠습니다.
<form>
<div>
<input type="text" name="field1" />
</div>
<div>
<input type="text" name="field2" />
</div>
</form>
식을 사용할 경우 다음과 같:
//input[@type='text'][1]
이 모든 텍스트 입력에 페이지입니다.왜?기 때문에 각각의 입력이 일치하는 첫 번째 요소에 그것의 자신의 나무입니다.
그러나,당신이 사용하는 표현이 다음과 같:
/descendant::input[@type='text'][1]
나
/descendant::input[@type='text'][2]
첫 번째 식로잡을 것이 첫 번째 입력하고 두 번째는 표현을 사로잡고 두 번째로 입력합니다.그것은 매우 중요한 것을 하나를 사용하여"/"과 이중"//".