2016-10-11 2 views
2

ID를 사용하지 않고 xpath로 어떤 것을 사용할 수 있습니까? 아니면 더 많은 체크 박스가 있지만 페이지를 새로 고친 후 ID가 여전히 다른 경우? 다음ID없는 체크 박스의 Xpath

<td class="player" style="vertical-align: top;"> 
<span class="gb-CheckBox"> 
<input id="gb-uid-120" type="checkbox" value="on" tabindex="0" style="background-color: rgb(255, 255, 255);"> 
<label for="gb-uid-120"></label> 
</span> 
</td> 
+0

이 몇 확인란 요소 만'id' 값이 다른가요? 이 순간을 분명히 할 수 있겠습니까? – Andersson

+0

특정'INPUT' 또는 그 모두를 찾고 있습니까, 아니면 ??? – JeffC

답변

1

시도 :

//span[@class="gb-CheckBox"]/input[@type="checkbox"] 
1

왜 :

//input[@type='checkbox'] 

이 충분해야하며, 체크 박스 타입 모든 입력을 선택합니다.
당신이 특정 지역에서만 필요한 경우는 당신의 앞에 다른 선택기를 추가하여 제약 조건을 추가 할 필요가 같은 :

//div[@class='my_prefered_area']//input[@type='checkbox'] 

선택기를 얻는 또 다른 방법은 ID의 파레을 사용하는 것입니다 그 물론

//input[contains(@id, 'gb-uid')] 

당신은 또한 체크 박스 유형에 대한 제한을 추가 할 수 있습니다 :처럼 변경되지 않습니다

//input[contains(@id, 'gb-uid')][@type='checkbox'] 
+0

확인란이 선택되어 있는지 확인하거나 때로는 그 중 일부를 클릭해야합니다. 그러나 나는 더 많은 체크 박스를 가지고 있으며 그들 모두는 ID가 다른 동일한 클래스를 가지고 있지만 고정되어 있지 않다. 그리고 이것은 또한 팝업창에 있습니다.이 "xpath"중 일부를 "popup"윈도우가 아닌 메인 페이지에서 체크 박스를 체크해 보았습니다. – vb381

+0

팝업에서 해당 확인란을 선택해야합니다.그것들을 검사해야한다면 check() 메소드 광고가 있는지 확인하십시오. – lauda

0

을 당신 locat입니다 수도 있습니다 전자 훨씬 더 빨리 다음과 같이 될 것 대신에 쉽게 xpathcssSelector을 사용하여이 체크 박스 : - 위에서 언급 한 방법의 대부분이 올바른지대로 대답을 얻었다처럼

td.player > span.gb-CheckBox > input[type='checkbox'] 
+0

아래쪽 투표에 대한 설명? 나는 OP가 xpath를 원한다는 것을 안다.하지만 이것은 셀레늄이 cssSelector를 찾아서 요소를 지원하기 때문에 또한 효과가있다. 이것은 더 좋은 제안이다. 이 답변이 정확하지 않다는 것을 알기를 바랍니다. 감사합니다 –

+0

아래로 투표하지 않습니다 나에게서 ...하지만, 나는이 방법을 시도했지만 그것은 나를 위해 일하지 않습니다 ... – vb381

+0

@ vb381 당신은 그것이 작동하지 않는다는 것을 무엇을 의미합니까? 어떤 예외가 있습니까? –

1

이 보인다.

수정 첫 번째 경로 재치 CSS :

td.player>span.gb-CheckBox>input[type='checkbox']

또는

td.player>span.gb-CheckBox>input
(전>을 한 후 공백을 제거 그것을 시도) 또한 작동합니다.

앞에서 언급했듯이 Id가 자주 바뀌면 그 말은 동적 웹 요소이고, 마지막에 바뀌면 입니다 (gb-uid- 즉 gb-uid-120, gb-uid-121 이후). 이 같은)를 사용하면 다음과 같이 XPath는에 기능이 포함되어 같은`HTML`와

//span[@class="gb-CheckBox"]/input[contains(@id, 'gb-uid-')]