2012-03-21 31 views
7

İstek özelliklerini yazıyoruz ... Capybara kullanıyorum ... Ve bazı modal pencerelerde sorun yaşıyorum.(Capybara) access modal window

Aslında benim sınamada istediğim şey, kalıcı bir pencerede açılan bir formu doldurmaktır.

Modal, Twitter'dan (http://twitter.github.com/bootstrap/javascript.html#modals) Bootstrap ile oluşturulmuştur ... ve bir dizi geçişten geçmektedir (ancak bunun söyleneceklerle alakalı olup olmadığını bilmiyorum).

ben gibi web üzerinde bulunan birkaç geçici çözümler, denedim: emin olmak için wait_until kullanılarak page.driver.browser.window_handles

page.driver.browser.switch_to.window(page.driver.browser.window_handles.last) 

B) ile sayfalar arasında geçiş)

A o modal yükler

def modal_wrapper_id 
    '#modal-edit' 
end 

def modal_visible 
    wait_until { find(modal_wrapper_id).visible? } 
rescue Capybara::TimeoutError 
    flunk 'Expected modal to be visible.' 
end 

Ancak bunların hiçbiri işe yaramadı ... bu nedenle, pencere penceresinin etkin olduğu anda pencere tutamaçlarının sayısını oluşturmayı düşündüm ...

Yani bu yaptı:

puts page.driver.browser.window_handles.length.should == 2 

Ve bu var:

Anladığım kadarıyla
Failure/Error: page.driver.browser.window_handles.length.should == 2 
      expected: 2 
      got: 1 (using ==) 

, pratikte benim kalıcı pencere yok.

Bu konuda herhangi bir yardım çok takdir edilecektir.

Teşekkür ederiz.

cevap

1

Capybara'yı kullanmadım, ama probleminiz, Bootstrap'in modal diyaloğunun aslında bir sahte mod olduğu gerçeği ile ilgili olması, aslında sadece bir div elemanı ve arkasında şeffaf bir yer paylaşımı olmasıdır. Örneğin, örnek kodunuzu kullanarak sorgulanabilen, örneğin, window.confirm kullanılarak gerçek bir kalıcı iletişim kutusu oluşturulabilir. Durumunuzda, modal div elemanını bir id vermelisiniz ve bunu Capybara'dan sorgulamak için bir tutamaç olarak kullanmanız ve ekranının "blok" olmasına kadar beklemeniz gerekir. Bir şey test etmemişti.

1

Capybara varsayılan olarak şunu kullanır: rack_test sürücüsü. Selenyum WebDriver'ı veya bir modal kutusunun açılmasının mümkün olduğu başka bir sürücüyü kullandığınızı onaylayabilir misiniz?

+0

Selenium'u kullanıyorum! 'Capybara.default_driver =: selenium' – adritha84

+0

Tamam, bunu postanızda belirtmediniz. Yanlış bir şey göremediğimden, test paketinizde bu pop-up'ı gerçekten çağırdığınızdan emin olacağım (bir şeye tıklayarak, vs, iş mantığını bilmiyorum). Ayrıca, sadece test amaçlı olarak, 'pop-up' çağırma eyleminden sonra biraz uyuyabilirsiniz. – socjopata

+0

Bazı "uyku" eylemlerini benim özümümle koydum ve pek çok açıdan test ettim ... ve dediğin gibi, yanlış bir şey göremiyorum ... Ama yine de, belirtilen hatayı alıyorum, Bu modal pencerenin tutamacının anlamı yoktur, dolayısıyla pencere mevcut değildir. – adritha84