2017-11-29 28 views
2

정렬되지 않은 목록에서 list_items를 얻는 방법에 대한 최상의 성능 입력을 찾고 있습니다. 표시되는 list_items 만 반환하면됩니다. 다음숨겨진 요소의 큰 콜렉션에서 가시적 인 list_item을 반환하는 최선의 선택

가 300 list_items 대략하고는 현재

나 '볼 수 있습니다 그 (40)를 반환 약 19 초 걸리는 내가

<div id="queue-body"> 
<ul id="queue-list"> 
    <li class="message" style="display: none;">oculto</li> 
    <li class="message" style="display: none;">oculto</li> 
    <li class="message" style="display: none;">oculto</li> 
    <li class="message">vidljiv</li> 
    <li class="message">vidljiv</li> 
    <li class="message">vidljiv</li> 
    <li class="message">vidljiv</li> 
</ul> 
</div> 

와 함께 일하고 있어요 HTML의 샘플입니다 사용하고 있습니다 다음은이 내 ENV에 대한 스택 내 페이지 개체

unordered_list(:queue_list, :id => 'queue-list') 
def visible_queue_submissions 
    queue_list_element.list_items.find_all(&:visible?) 
end 

에 다음

page-object 2.2.4 
watir 6.10 
selenium-webdriver 3.7.0 

답변

4

find_all(&:visible?) Watir은 각 목록 항목에 대해 유선 전화를 걸어야하므로 속도가 느립니다. 빨리 처리하려면 반복을 필요로하지 않는 선택기를 선택해야합니다. 이는 일반적으로 Watir이 XPath 빌더에 결합 할 수있는 속성을 찾는 것을 의미합니다.

이 경우 표시되는 요소에는 스타일 속성이 없습니다. 따라서 새로운 존재/부재 로케이터 사용할 수 있습니다 : 심지어이 작은 목록

def visible_queue_submissions 
    queue_list_element.lis(style: false) 
end 

을, 나는 0.14s 아래로 1.26s에서 실행 시간을 보았다.

+0

저스틴에게 감사드립니다.이 답변은 watir의 작동 방식을 이해하는 데 매우 도움이되었으며 새로운 존재/부재 로케이터를 알려줍니다. – niartseoj