2016-03-23 26 views
1

kullanarak seçme seçenekleri doğrulanıyor -RSpec + Capybara: I (orada aşağıda bu kodu sarar "ülkelerin" kimliğine sahip bir DIV olan) ve bu ben gereken bir HTML belgesi var xpath

  1. Seçimdeki seçenekleri doğrulayın. Bunu denedim ama bu geçerli değil.

    bekliyoruz (sayfa) .to have_xpath (('// * seçmek // [id = "ülkeler" @]') [1], : Seçenekler => [ 'ABD CAN GER POL'])

  2. doğrula seçme ikinci POL ilk seçmek seçildiğinden emin

  3. Doğrula'yı seçmek için, ilk olarak devre dışı CAN

  4. doğrula devre dışı olduğu

  5. 012.
  6. Değişim ilk GER seçilen seçenek Sana sağlayabilir herhangi bir yardım takdir

      <li> 
          <fieldset> 
          <select> 
           <option value="US">USA</option> 
           <option value="CAN" disabled>Canada</option> 
           <option value="GER">Germany</option> 
           <option value="POL" selected>Poland</option> 
          </select> 
          <fieldset> 
      <li> 
      <li> 
          <fieldset> 
          <select disabled> 
           <option value="US">USA</option> 
           <option value="CAN">Canada</option> 
           <option value="GER">Germany</option> 
           <option value="POL">Poland</option> 
          </select> 
          <fieldset> 
      <li> 
      

seçin. Teşekkürler!

cevap

1

Uyarı Sözcüğü, ben hala rspec için should sözdizimini kullanıyorum ve ayrıca xpath yerine css seçicilerini kullanıyorum. Okumayı daha kolay buluyorum.

(1) Eğer biri diğerinden tanımlayan herhangi bir spesifik kimlikleri veya sınıf adları olmadan iki dropdowns sahip olduğundan, ben senin beklentilerini bağlamını kısıtlamak için all kullanacağı

all('#countries select')[0].should have_text('USA Canada Germany Poland')

(2) Aynı kavram Yukarıdaki gibi, kapsamı kısıtlayın. İkinci fieldet devre dışı bırakılmış bir açılır menü içermelidir.

all('#countries fieldset')[1].should have_css('select[disabled]')

(3) all('#countries select')[0].should have_css('option[disabled]', :text => 'Canada')

(4) # 3 olarak ancak farklı öznitelik ve metin ile aynı cevabı

(5) all('#countries select')[0].find('option', :text => 'Germany').click

+1

Sen devlet kuşu Phil vardır! Teşekkür ederim, bu şeylerle saatlerce kafamı kırıyorum. –

+0

Verilen örneğiniz için bu harika bir cevaptır, ancak seçimlerinizde (id, isim, etiket) vb. Herhangi bir tanımlayıcı varsa, o zaman capybara size_select eşleştiricisini sağlar ve destekleyici (: select, ...) bulucuyu bulur daha çok semantik terimlerle istediğiniz şeylerin çoğu için seçenekler. –

+1

@TomWalpole - Formumda, rastgele oluşturulmuş adlara ve kimliğe sahip satırları dinamik olarak ekledim, böylece testlerimde kullanamadım. Sonuç olarak, bu yaklaşım benim için daha iyi çalışıyor. –