2017-04-19 3 views
0

이것이 가능할 지 모르겠지만 내 코드를 분기하고 DOM에 존재하는 경우 요소에 대해 조치를 수행하고 싶습니다. 그렇지 않으면 테스트가 필요합니다. 다음과 같이 정상적으로 일을 계속 : 나는이 작업을 수행 할 때마다 그것은 내가 테스트하기 위해 노력하고있어 일이 선택기를 찾을 수 없기 때문에요소가 표시 될 때만 논리를 실행하는 방법

def reset_filters() 
    clear_filters() if find(:filter_icon_button).exists? 
end 

이 테스트는 항상 실패합니다.

어떻게하면됩니까? 그것을 찾을 수없는 경우

+0

언어를 처음 사용하는 경우에는 상관하지 않습니다. 우리는 문제를 연구하고 문제를 해결하기 위해 노력한 후에 만 ​​간결하고 잘 질문하는 질문을 던졌습니다. "[ask]", "[mcve]"및 링크 된 페이지 및 "[Stack Overflow 사용자에게 얼마나 많은 연구가 필요합니까?] (http://meta.stackoverflow.com/questions/261592)"가 유용합니다. –

답변

1

당신은 상승보다는 부울 결과를 반환 has_xxx? 방법 중 하나를 사용합니다 - http://www.rubydoc.info/gems/capybara/Capybara/Node/Matchers#has_selector%3F-instance_method

def reset_filters() 
    clear_filters() if page.has_selector?(:filter_icon_button) 
end 

참고 :이 매칭 Capybara.default_max_wait_time 초까지 대기 요소가 페이지에 표시되도록합니다 (그렇치 않으면 false를 반환). 가능한 기다리지 않고 즉시 결정하기를 원하는 경우

page.has_selector?(:filter_icon_button, wait: 0) # or wait: false