Sizi bekleyen bir Capybara yöntemini kullanarak, içeriğin sayfada yalnızca AJAX tamamlandıktan sonra sayfada bulunması gerektiğini varsayalım. Örneğin, sayfa "Sayfa yüklendi!" AJAX RSpec kullanıyorsanız tamamlanmış, ve seni varsayarak yalnızca sonra, şunu yapın: Daha sonra güvenli bir şekilde tamamlamış olan AJAX bağlıdır sayfadaki diğer şeyler test edebilirsiniz
expect(page).to have_content("Page loaded!")
. görünmesini belirli bir içeriği bekleyin
Capybara yöntemleri find
ve find_*
yöntemleri, within
, has_content?
/has_no_content?
,/has_no_css?
has_css?
, has_selector?
/has_no_selector?
, click_*
, fill_in
, check
, uncheck
, select
ve choose
sayılabilir. Bazı Capybara yöntemleri , current_path
, visit
, execute_script
, evaluate_script
ve text
ve value
gibi düğüm erişimcileri dahil olmak üzere beklemez. all
ve first
bunlara beklemek için belirli bir şey vermenizi sağlayacak seçenekleri (:count
, :minimum
, :maximum
, :between
), yoksa beklemeyin. Bu bir mayın tarlası. (Listeleri çoğunlukla this blog post'dan aldım.)
Beklemenin başka yolları (sleep
(hatalı), veritabanını AJAX'ın neden olduğu bir değişiklik oluşuncaya dek yoklama vb.), Ancak sizin için bekleyen Capybara yöntemlerini kullanmak da vardır. her zamanki ve önerilen yol.
Tamam Tamam, ancak yine de boş etiketler alıyorum. Baktığım site Angular.js'de yazılıyor ve "ng-cloak" etiketleriyle kaplanmış gibi görünüyor, bu da her şeyi işlemeye hazır olana kadar hiçbir şey vermeyeceği anlamına geliyor. Sayfayı istemek ve sonra birkaç saniye için phantoms render işlemini geciktirmek için bir yolu var mı? – bkunzi01
Bildiğim kadarıyla değil. Testini sadece uyuyabilirsin, ama bu yavaş bir testi garantiler. Gerçekten bekleyebileceğiniz bir içerik bulmaya çalışacağım. Bu şekilde çok sayıda Açısal test ettim. Ayrıca, poltergeistin, sayfanın birinden oluşmadığından emin olmanız için [Javascript hatalarını yeniden yükseltmek üzere yapılandırılmış] olduğundan emin olun (https://github.com/teampoltergeist/poltergeist#customization). –
Dang, "ziyaret" ten sonra rasterize.js eklemeye kadar herşeyi uyduruyor ama bu, Mechanize ya da Nokogiri'den daha fazlasını elde edemiyor gibi görünüyor.gibi sadece şeyler:
<- -!> bunu iki gün oldu çünkü ben çok memnun oluruz artık tavsiyen var ve hala olursam <- -