Saya mencoba memilih item dari menu drop-down menggunakan Capybara (2.1.0).
Saya ingin memilih berdasarkan nomor (artinya pilih opsi kedua, ketiga, dll).
Saya sudah googled seperti orang gila mencoba segala macam hal tetapi tidak berhasil.
Saya dapat memilihnya dengan menggunakan nilai:
find("option[value='4c430d62-f1ba-474f-8e8a-4452c55ea0a8']").click
Tapi saya tidak ingin menggunakan metode itu b / c nilainya adalah sesuatu yang akan berubah dan itu akan membuat tes saya rapuh.
HTML untuk drop down adalah:
<td class="value">
<select name="organizationSelect" id="organizationSelect" class="required">
<option value="NULL">Choose...</option>
<option value="4c430d62-f1ba-474f-8e8a-4452c55ea0a8"> Institution1</option>
<option value="e1a4efa7-352d-410a-957e-35c8a3b92944"> Institution / test</option>
</select>
</td>
Saya juga mencoba ini:
option = find(:xpath, "//*[@id='organizationSelect']/option[2]").text
select(option, :from => organizationSelect)
Tapi itu menghasilkan kesalahan ini:
Ambiguous match, found 2 elements matching option "Institution" (Capybara::Ambiguous)
Jadi bagaimana saya bisa memilih opsi pertama, kedua, ketiga, dll dari drop down (menggunakan Capybara)?
sumber
select('option_name', from: 'select_box')
. Di mana nilainya dapat: id, nama, elemen label terkait. Anda dapat membaca lebih lanjut tentang opsi Capybara dan DSL di sini .Untuk beberapa alasan itu tidak berhasil untuk saya. Jadi saya harus menggunakan sesuatu yang lain.
bekerja untukku.
sumber
form
, bukanfrom
. Berikut adalah dokumentasi pada selectPilihan lain adalah menambahkan metode seperti ini
sumber
find("select[name='organization_search[role]']").find(:option, text: :Staff).select_option
find(:css, "#search_field").find(:option, "Opp Last Name").select_option
, yang merupakan teks opsi yang ditampilkan, bekerja untuk saya, sedangkan nilai opsi tidak.Sayangnya, jawaban yang paling populer tidak bekerja sepenuhnya untuk saya. Saya harus menambahkan di
.select_option
akhir pernyataanselect("option_name_here", from: "organizationSelect").select_option
tanpa
select_option
, tidak ada pilih yang dilakukansumber
.select_option
, karenaselect
metode mengembalikan nilai boolean?Untuk menambahkan jawaban lain pada tumpukan (karena ternyata ada begitu banyak cara untuk melakukannya tergantung pada pengaturan Anda) - Saya melakukannya dengan memilih
option
elemen literal dan mengkliknyaIni tidak terlalu cantik, tetapi berfungsi: /
sumber
tidak ada jawaban yang bekerja untuk saya pada tahun 2017 dengan capybara 2.7. Saya mendapat "ArgumentError: jumlah argumen salah (diberikan 2, diharapkan 0)"
Tapi ini berhasil:
sumber
Ini bukan jawaban langsung, tetapi Anda bisa (jika server Anda mengizinkan):
1) Buat model untuk Organisasi Anda; ekstra: Akan lebih mudah untuk mengisi HTML Anda.
2) Buat pabrik (FactoryGirl) untuk model Anda;
3) Buat daftar (create_list) dengan pabrik;
4) 'pilih' (sampel) Organisasi dari daftar dengan:
sumber
Inilah cara paling ringkas yang saya temukan (menggunakan capybara 3.3.0 dan driver chromium):
akan memilih opsi ke-2. Tambahkan indeks sesuai kebutuhan.
sumber
Di Capybara, Anda hanya dapat menggunakan find dengan xpath
dan klik metode
sumber