2015-01-16 6 views
1

У меня есть страница, которая после загрузки вызывает DataTables в двух разных таблицах. Однако при загрузке страницы вторая таблица ошибочна. Вот ошибка:Capybara/Selenium Webdriver + DataTables не играет хорошо

DataTables warning: table id=DataTables_Table_1 - Ajax error. For more information about this error, please see http://datatables.net/tn/7

Что раздражает, что если я ставлю debugger сразу после загрузки страницы в Капибаре, я могу нажать на ошибку, чтобы закрыть его, а затем вручную перезагрузить данные в DataTable с На моей странице есть кнопка, и она работает нормально. Также странно, что первый DataTable на странице загружается отлично (и у него есть DataTable(), вызывающий на него PRIOR тот, который ломается). Я подумал, может быть, это была проблема на стороне сервера, которая возвращает информацию для заполнения таблицы, но оказывается, что она никогда не ударяет по серверу (пока я не нажму кнопку перезагрузки). Если я загружаю другую страницу только с одним DataTable, она показывает ту же ошибку. Что странно, так как первая таблица на странице с двумя таблицами загружается, но одна таблица на странице с одной таблицей разбивается сама по себе.

Кто-нибудь видел что-нибудь подобное? Я бы опубликовал свой код Capybara, но он буквально просто посещает страницу, которая вызывает проблему, ничего необычного.

Сначала я подумал, что проблема связана с тем, что JS вызывается слишком быстро или что-то в этом роде, но одна страница с одной таблицей разбивается, а только вторая таблица, разбивающаяся на другой странице, немного странная. Опять же, он никогда не попадает на сервер (который должен быть) на загрузку страницы, поэтому на внутреннем сервере ничего нет. Не знаете, с чего начать.

ответ

2

После некоторой дополнительной отладки я понял, что был тонкий (не отображался в журналах, поскольку журналы сервера не были напечатаны в тестовой среде). Ошибка 414. Капибара, видимо, предотвращает длинные запросы GET (хотя основные браузеры теперь поддерживают их), поэтому я отправил вопрос здесь: https://github.com/jnicklas/capybara/issues/1467

Я предпочел бы не использовать POST для индекса маршрута :)

+0

Отлично! У меня такая же проблема. –

2

От версии 2.7.0 и далее Capybara поддерживает конфигурацию сервера изначально.

Просто добавьте gem 'puma' к вашему Gemfile и следующая строка в rails_helper.rb:

Capybara.server = :puma

Это позволит решить 414 (слишком большой Request-URI) ошибки и DataTables будет работать должным образом с Капибара.

Смежные вопросы