После получения этой ошибки в этом previous context, я снова получаю ту же ошибку, что и в моем тестовом наборе. Разница в том, что теперь я вызываю функцию generate_steps_to_validate_school_pricing
, которая делает следующее.Capybara :: ElementNotFound для AJAX populated <select> option
def generate_steps_to_validate_school_pricing(school_pricing_hash, school, homestay_single_room_per_week_cost, airport, airport_price)
school_pricing_hash.each do |program_name, program |
prog_name = school + " - " + program_name
program.each do |price_point_number, price_per_week|
visit "/application/new"
fill_in "school_application_first_name", :with => "bob"
fill_in "school_application_family_name", :with => "balaban"
check("school_application_sevic") #200 dollars
select(school, :from => 'school_application_fls_center')
check('school_application_I_20')
check('school_application_pay_application_fee_or_full')
fill_in "school_application_start_date", :with => "05/11/2015"
select(airport, :from => 'school_application_arrival_airport')
select('Homestay Single Room', :from => 'school_application_housing_type')
check("school_application_health_insurance")
check("school_application_transfer_student")
fill_in "school_application_comments", :with =>"Lorem"
fill_in "school_application_gender", :with =>"trans"
fill_in "school_application_address", :with=> "5/11/15"
fill_in "school_application_city_state_province", :with =>"Dubai"
fill_in "school_application_email", :with =>"[email protected]"
select(airport, :from => 'school_application_arrival_airport')
fill_in "school_application_postal_code", :with =>"90226"
fill_in "school_application_country", :with=> "Zimbabwe"
fill_in "school_application_date_of_birth", :with =>"Dubai"
fill_in "school_application_phone_number", :with => "2134932434"
select(price_point_number, :from => "school_application_duration")
check("school_application_read_everything")
fill_in "school_application_country_of_birth", :with =>"Aim"
fill_in "school_application_country_of_citizenship", :with =>"Durango"
check("school_application_work_with_ad")
fill_in "school_application_agency", :with =>"Aim"
fill_in "school_application_fax_number", :with =>"Durango"
save_and_open_page
select(prog_name, :from => "school_application_program") # this is the line that fails
total = price_point_number[0] *price_per_week
total = total + price_point_number[0] * homestay_single_room_per_week_cost
total = total + 500 #SEVIS fee (200) + Housing Application and Application Fees (150 each)
total = total + airport_price
total = total + 35 * price_per_week[0] #current Insurance for 2015 is 35/week
click_button "Continue"
expect(page).to have_text(total.to_s + " USD")
end
end
end
в то время как последовательность шагов, определенных в функции не имеет :js=>true
применена, scenario
который делает вызов это делает. Я уверен, что звонки AJAX, как правило, работают как тесты, соответствующие другим двум <select>
s, которые заполняются через проход AJAXs.
Когда я делаю save_and_open_page
выпадающий список, который должен иметь prog_name
, пуст, что, по-видимому, говорит мне, что по какой-то причине этот вызов AJAX ломается. Я не уверен, как протестировать этот метод отдельного контроллера, чтобы увидеть, что происходит, и в равной степени неуверен в том, что делаю это: когда я выполняю ту же самую процедуру, что и «Счастливый путь», который я тестирую на localhost
, все AJAX звонки работают отлично, включая заполнение <select>
, который в настоящее время не заполняется.
Любые замечания о том, как систематически отлаживать это, будут оценены. Спасибо!
N.B. Проблема может быть в том, что тест не ждет, пока Сервер ответит данными, пока не вернет обратный вызов. Есть ли способ дождаться ответа?
ОБНОВЛЕНИЕ: Пробовал расширять Capyabara.default_wait_time
до 20 секунд, все еще не удалось, что я чувствую, что это асинхронная проблема?
вы можете попробовать этот учебник http://robots.thoughtbot.com/automatically-wait-for-ajax-with-capybara –