Saya menggunakan Rspec dan Capybara.
Bagaimana saya bisa menulis langkah untuk memeriksa checkbox
? Saya sudah mencoba check
dengan nilai tetapi tidak dapat menemukan saya checkbox
. Saya tidak yakin apa yang harus dilakukan, karena pada kenyataannya saya memiliki ID yang sama dengan nilai yang berbeda
Ini kodenya:
<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID">
<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID">
<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">
Jawaban:
Saya menemukan yang berikut ini berfungsi untuk saya:
sumber
find(:css, "#cityID[value='62']").set(true)
akan berfungsi tetapifind(:css, "#cityID[][value='62']").set(true)
tidak akan ditemukan dan gagal. Bagaimana cara menjalankan fungsi yang sama dengan id braket kosong?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
Lebih baik tidak membuat banyak elemen dengan id yang sama , sehingga (dan tidak hanya itu) Anda dapat dengan mudah menandai / menghapus centang pada kotak centang dengan elegan
Jika seseorang tidak dapat menghindari beberapa elemen dengan id yang sama dan masih perlu memeriksa kotak centang dengan nilai tertentu , ia dapat melakukannya dengan
Informasi lebih lanjut tentang manipulasi input capybara dapat ditemukan di sini
sumber
Saat menjalankan tes capybara, Anda mendapatkan
page
objek. Ini dapat Anda gunakan untuk mencentang / menghapus centang pada kotak centang. Seperti @buruzaemon sudah disebutkan:Jadi mari kita asumsikan Anda punya kotak centang di html Anda seperti:
Anda dapat memeriksanya dengan:
Hapus centang adalah metode yang sama gunakan saja
page.uncheck
.sumber
check
metode ini diterapkan di Capybara.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Saya pikir Anda mungkin harus memberikan yang unik
id
untuk elemen bentuk Anda , pertama-tama.Tetapi berkenaan dengan Capybara dan kotak centang, metode contoh cek Capybara :: Node :: Actions akan memungkinkan Anda menemukan dan memeriksa kotak centang dengan nama, id, atau teks label.
sumber
Jika kotak dikaitkan dengan teks, misalnya 'Opsi 3', maka
capybara 3.0.3
Anda dapat melakukannyasumber
Saya tahu ini adalah pertanyaan yang lebih tua, tetapi saya sendiri yang telah mengerjakannya, dan setelah mencoba semua hal di atas, inilah yang akhirnya berhasil bagi saya:
Semoga ini bermanfaat bagi seseorang. Saya menggunakan Capybara 2.4.4.
sumber
Topik lama tetapi solusi lain adalah:
check('Option 3', allow_label_click: true)
sumber
Anda juga dapat menggunakan: xpath bukannya: css jika Anda memiliki masalah menemukannya.
di Chrome (dan tentunya peramban lainnya), Anda dapat "memeriksa elemen" dan kemudian dengan mengklik kanan pada elemen yang Anda minati, ada 'salin xpath' jika Anda tidak tahu apa itu xpath, sekarang Anda lakukan.
sumber
Anda juga dapat memeriksa bahwa semua kotak centang tidak dicentang dengan contoh ini.
all ('input [type = checkbox]'). setiap do | checkbox | checkbox.should_not be_checked end
sumber
.set (true) tidak berfungsi untuk saya, jadi saya harus menelepon .click:
find(...).click
sumber
click
itu sendiri adalah perintah capybara yang valid (atau setidaknya jika itu, sepertinya tidak ada pada dokumen), dan (2) jika ya, itu mungkin akan mengaktifkan kotak centang, tidak memastikan itu hidup atau matiAda beberapa masalah dengan kotak centang khusus yang tersembunyi di balik elemen label. Dibutuhkan a
allow_label_click: true
.Dengan mengacu pada posting blog ini ,
sumber
Saya pikir ini akan membuat capybara menunggu pendengar acara apa pun yang dilampirkan pada input itu, yang kadang-kadang menyebalkan jika tidak menunggu .... Jika input itu tidak memiliki ID, pilih properti lain (pasti ada satu) ...
sumber
untuk memilih kotak centang
sumber