2011-09-08 28 views
9

Có cách nào thanh lịch để thực hiện việc này không? Hiện tại tôi chỉ sử dụng một bước tùy chỉnh "Và chờ 10 giây" để chắc chắn, có đủ thời gian để khung nội tuyến sẵn sàng. Tôi không muốn tính năng này thất bại trên máy ảo CI không đủ mạnh của tôi vì một vấn đề mạng nhỏ hoặc đột biến CPU. Nhưng điều này có nghĩa là bộ tính năng lãng phí rất nhiều thời gian, và như bạn đã biết, nếu bộ thử nghiệm mất một thời gian dài, người ta thường không bận tâm để chạy nó bên ngoài máy chủ CI.Yêu cầu Capybara đợi cho đến khi khung nội tuyến được tải (đã sẵn sàng)

+1

Bạn đang sử dụng trình điều khiển nào? –

+0

selenium-webdriver với chrome –

Trả lời

15

Nếu bạn biết những gì đang xảy đến được trong iframe của bạn, bạn có thể làm:

within_frame 'iframe_selector' do 
    wait_until(10) do 
     page.should have_content("Content you're waiting for") 
    end 
end 

Phương pháp wait_until sẽ tiếp tục chờ đợi trong 10 giây hoặc cho đến khi tình trạng page.should trả về true.

+0

thnx, cần đủ –

+10

Lưu ý rằng với capybara mới nhất have_content tự động chờ, vì vậy bạn sẽ không cần wait_until –

+0

Cảm ơn câu trả lời của bạn .. :) Các tác phẩm của nó tuyệt vời .. – Selvamani

Các vấn đề liên quan