2016-10-18 2 views
0

큰 DOM (1000 줄, 10,000 노드)이있는 페이지에서 셀레늄을 사용하고 있습니다. DOM의 맨 끝 부분에있는 요소가 있는지 확인하려고합니다. section 노드는 라인의 99 %를 포함끝 부분에있는 요소에 대한 큰 DOM 검색

<html> 
    <body> 
     <section></section> 
     <script></script> 
     <span> 
      // several more wrappers around the UL 
      <ul id="itemsList"></ul> 
     </span> 
    </body> 
</html> 

:

구조는이 같은 것입니다.

UL은 항상 같은 위치에 있습니다.

내가 사용하고는 XPath는 다음과 같다 :

//body/span//ul 

UL 인증이있는 경우, 검색이 <은 500ms 소요됩니다. 그러나 UL이 없으면 검색에 2 ~ 5 초가 소요됩니다. 순회가 똑같은 방식으로 일어나고 같은 시간이 걸릴 것으로 예상하므로이 점을 이해하지 못합니다.

셀렌을 사용하고 있으므로 By.Id을 사용해 보았지만 동일한 결과가 나타납니다.

+2

코드에 암시 적 타임 아웃이 있습니까? – Grasshopper

+0

위의 주석에 추가적으로 getElementsByXpath (또는 List )를 사용하고 해당 목록의 크기를 확인하는 것이 좋습니다. – Mikhail

+0

하드 드라이브에서 루트 (C : \)부터 시작하는 파일을 검색하는 것을 생각해보십시오. C : \ Users \ you \ Documents \ projects \ foobar \ meetingMinutes \ 2015 \ January \ 에서 시작하는 것과 비교해보십시오. XPath에서 지정하는 DOM 구조가 많을수록 셀렌이 검색해야하는 경로의 수가 줄어들고 빠른 검색이 완료됩니다. – MikeJRamsey56

답변

0

코드에 명시 적 대기 명령이있을 수 있습니다. 셀렌이 내에서 요소를 찾을 수있는 경우 암시 적 대기 다음 단계로 넘어갑니다. 암시 적 대기 시간에서 요소를 찾을 수없는 경우 을 명시하고 명시 적 대기을 확인하고이 요소에 대한 명시 적 대기를 제공 한 경우 셀레늄은 예외를 throw하기 전의 명시적인 대기 시간

+0

물론입니다! – FLSH

관련 문제