카피 바라에는 대기 중 및 대기 중 기능이 있습니다. 가능한 한 처음 사용하려고합니다.카피 바라의 CSS 요소 대기 기능
find
(또는 그 파생물 중 하나)을 사용하여 비동기 적으로 나타나는 CSS 요소를 찾는 방법이 있습니까? 불행히도, 함수 page.has_css?
은 대기하지 않는 함수입니다.
카피 바라에는 대기 중 및 대기 중 기능이 있습니다. 가능한 한 처음 사용하려고합니다.카피 바라의 CSS 요소 대기 기능
find
(또는 그 파생물 중 하나)을 사용하여 비동기 적으로 나타나는 CSS 요소를 찾는 방법이 있습니까? 불행히도, 함수 page.has_css?
은 대기하지 않는 함수입니다.
page.has_css?
이 대기 기능이 아닌 주장이 정확하지 않습니다. page.has_css?
은 페이지에 요소가 나타나려면 Capybara.default_max_wait_time
초까지 대기하고 요소가 해당 시간 내에 페이지에 있는지 여부에 따라 true
또는 false
을 반환합니다. 따라서 주어진 Capybara.default_max_wait_time = 5
if page.has_css?("div#my_div")
puts "on page"
else
puts "not on page"
end
은 최대 5 초 동안 대기합니다. ID가 "my_div"인 div가 페이지에 표시되면 "페이지에"인쇄됩니다. 일치하는 div가 5 초 내에 표시되지 않으면 "페이지에 표시되지 않음"이 인쇄됩니다. 당신이 특정 통화에 대해 더 이상 기다릴하려는 경우 당신은 당신이
page.assert_selector(:css, 'div#my_div') # :css is the default so can usually be omitted
page.assert_css('div#my_div') # minitest
expect(page).to have_css('div#my_div') # RSpec
을 수행 할 수 있습니다 존재하는 요소를 확인 할
:wait
옵션
if page.has_css?("div#my_div", wait: 10) # will wait up to 10 seconds
...
을 통과하는 경우보다는 부울 응답을 원하는에 의해 default_max_wait_time
을 대체 할 수 있습니다 요소를 기다립니다
는 이전에 나타납니다,하지만 당신은 당신이 우리를 할 수있는 실제 요소를해야하는 경우 요소가
를 표시하지 않는 경우 false
을 돌아보다 예외를 오히려 올리는 e find
도 대기합니다. 따라서
el = page.find(:css, 'div#my_div') # :css is the default and can usually be omitted
은 요소가 나타날 때까지 기다리고 발견되면 요소를 반환합니다. 요소가 default_max_wait_time
초 이내에 발견되지 않으면 예외가 발생합니다.
참고 : 요소에서 반환하지만 기본적으로, 유일한 비 대기 방법, 심지어 당신이 카운트 옵션 (:count
, :minimum
, :maximum
, :between
)의 전달 경우 기다려야 할 수 all
하고 first
및 그것들은 여전히 재로드 할 수 없기 때문에 범위 지정을 위해 사용될 경우 추가 동작 효과를 가질 수 있습니다. click_link
, click_button
등과 같은 메소드도 find(...).click
등으로 구현되기 때문에 기다릴 것입니다.
메소드'find'는 이미 기다립니다 발견되는 요소 테스트가 어떤 로직도 포함해서는 안되기 때문에, page.assert_selector ('# foo', : count => 1)'요소를 기다리거나 page.assert_selector ('# foo', : count => 0))'아무도 기다리지 말라. –
@FlorentB. 'page.assert_selector ('# foo', : count => 0)'는 page.assert_no_selector ('# foo')'로 쓰여질 수 있습니다. 'page.assert_no_selector ('# foo', count : 3)' –