2012-10-15 37 views
7

Tôi có một trang trên trang web của mình mà tôi đang cố gắng kiểm tra yêu cầu người dùng dành ít nhất năm giây trên trang trước khi tiếp tục. Có cách nào với Capybara để có được bài kiểm tra dưa chuột của tôi để tạm dừng trên trang đó và chờ năm giây trước khi tiếp tục với bước tiếp theo tôi mô tả?Chức năng ngủ ở Capybara/Dưa chuột?

Trả lời

20

Tôi có điều này trong định nghĩa bước của tôi:

Given /^I wait for (\d+) seconds?$/ do |n| 
    sleep(n.to_i) 
end 

Trong tính năng của bạn:

Given I am on the whatever page 
And I wait for 5 seconds 
And I follow "A Link" 
# etc... 
+2

Tôi cũng sẽ đề nghị, ngoài bước ngủ chung, ngủ được thêm vào một bước cụ thể được dàn dựng theo mục đích của nó. Ví dụ: nếu bước là "Đã cho tôi đang ở trên trang chờ", bên trong bước đó @ blim8183 sẽ ngủ trong 5 giây. Sau đó, bước tập trung hơn này có thể được sử dụng. – MrDanA

+0

Điều đó hoạt động hoàn hảo. Cảm ơn! – blim8183

+0

Nếu bạn đặt bước ngủ chung này trong tệp bước, bạn có thể [gọi nó từ các bước khác] (https://github.com/cucumber/cucumber/wiki/Calling-Steps-from-Step-Definitions) bằng ' bước "Tôi chờ 5 giây". Tôi sử dụng điều này để thêm sự chậm trễ nhỏ vào nhiều bước khác. – Jazz

1

Sẽ còn tuyệt vời để xác định động các đơn vị thời gian như thế này một:

Given /^I wait for (\d+) (second|minute|hour)s?$/ do |n, unit| 
    sleep(eval("#{n.to_i}.#{unit}")) 
end 
+0

Không bao giờ sử dụng 'eval'. Bạn chỉ yêu cầu rắc rối. 'sleep (n.to_i.send (unit))' –

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