Saya memiliki v4 select2 yang memuat opsi melalui AJAX. Saya menjalankan tes Mentimun di mana saya harus memilih 2 opsi daftar, tetapi sepertinya saya tidak dapat membuat daftar terbuka dan memuat (yang biasanya terisi ketika saya mengetik 2 atau karakter).

Saya telah mencoba:

Seperti yang disarankan di sini:

@session.execute_script("$('#publish_to').select2('open')")

Dan

@session.first(".input.publish_to .select2-container").click

Dan

@session.first("#publish_to").find(".select2-choice").click

Yang tidak memberi saya kesalahan, tetapi saya tidak mendapatkan opsi untuk dipilih, jadi saya berasumsi bahwa klik tidak benar-benar berfungsi. Hal-hal yang saya coba pilih opsi:

# This one cannot find the css:
@session.find(".select2-results__options", text: client.email).click

# This one gives me a Timeout error 
@session.evaluate_script "$('#publish_to').val(#{client.id}).trigger('change')"

# This one gives me a Timeout error 
@session.evaluate_script "$('.select2-search__field').trigger('keydown').val('#{client.email}').trigger('keyup')";
sleep 10
@session.find('.select2-search__option', text: client.email).click

Apa pun dengan trigger memberi saya kesalahan Timeout, jadi saya mencoba menunggu jQuery.active tetapi saya tidak pernah mendapatkan true bahkan menunggu selama 2 menit:

counter = 0
 timeout_in_sec = 120
 while counter < timeout_in_sec && @session.evaluate_script('jQuery.active').zero?
   sleep 1.second
   counter+=1
 end

Saya mencoba menggunakan gem capybara-select2 menjalankan: @session.select2 client.email, css: '#publish_to', cari: true tapi saya mendapatkan kesalahan undefined methodselect2' untuk #and I haveWorld(CapybaraSelect2)in myenv.rb`

Saya menggunakan Cucumber v3.1.2 dengan ruby ​​gem 'cucumber-rails'

0
marimaf 13 Maret 2019, 20:16

1 menjawab

Jawaban Terbaik

Driver poltergeist kira-kira setara dengan Safari versi 7 tahun yang berarti tidak mendukung banyak JS/CSS saat ini. Ini berarti masalah Anda bisa jadi karena select2 tidak lagi kompatibel dengan Poltergeist (tanpa banyak polyfilling). Anda akan jauh lebih baik memperbarui untuk menggunakan browser nyata (stabil - chrome melalui Selenium, dll) atau salah satu driver langsung ke Chrome (sangat beta) yang telah memisahkan Poltergeist (Penampakan adalah salah satunya). Itu akan memungkinkan Anda untuk menjalankan dengan browser yang terlihat (berguna untuk debugging) atau tanpa kepala.

Kode berikut menggunakan Chrome melalui Selenium dan berinteraksi dengan situs demo select2 untuk memilih entri yang dimuat melalui Ajax.

require "selenium/webdriver"
require "capybara/dsl"

sess = Capybara::Session.new(:selenium_chrome)
sess.visit("https://select2.org/data-sources/ajax")

sess.first('.select2-container', minimum: 1).click
sess.find('.select2-dropdown input.select2-search__field').send_keys("capy")

sleep 5 # just to watch the browser search

sess.find('.select2-results__option', text: 'teamcapybara/capybara').click

sess.assert_selector(:css, '.select2-selection__rendered', text: 'teamcapybara/capybara')

sleep 5 # just to see the effect
0
Thomas Walpole 13 Maret 2019, 17:40