2015-11-05 3 views
0

Я ищу некоторую помощь при приемочных испытаниях модуля Selectize jQuery с использованием тестовой среды Capybara.Выбирайте приемочные испытания Capybara

не

Мы имеем проблему с тем, как Selectize выкладывает HTML он генерирует, не существует окончательная связь между выберите в раскрывающемся списке и значение, содержащийся в раскрывающемся списке

Как вы можете видеть из моего jsfiddle здесь: http://jsfiddle.net/et4t20wz/

$('.test').selectize({ create: false, dropdownParent: 'body' });

Просмотр исходного кода, содержащий DIV имеет 3 выбирает внутри него и значение для выпадающего списка содержится внутри тела тега.

Мне нужно, чтобы наша тестовая группа смогла создать соединение 1 - 1 между этими двумя элементами. До сих пор мы пришли к довольно слабому соединению, так как мы знаем, что первые значения Selectize будут сохранены в первом div.selectize-dropdown. Мы можем использовать эту логику для сопоставления с первым div.selectize-control

Это довольно хлипкий и, вероятно, не лучший подход, но лучшее, что мы можем придумать до сих пор. Мы нашли несколько решений в Интернете, но, к сожалению, они, похоже, устарели или зависят от разных структур DOM.

Например: http://climber2002.github.io/blog/2014/09/22/capybara-integration-tests-with-jquery-selectize/

Надеюсь, мы не единственные, кто вступают в контакт с этой проблемой и кто-то может предложить некоторую помощь/советы

Спасибо заранее.

ответ

0

Так нам удалось решить эту проблему, используя решение, которое я нашел здесь: Capybara integration tests with jquery.selectize

код действительно не работает, однако. Поэтому я закончил использовать этот сценарий, который написал.

var selectize = jQuery('#key').selectize()[0].selectize; 

    jQuery(selectize.setValue(selectize.search('#value').items[0].id)); 
1

Я считаю, что ссылка только позиционная в HTML, две дивов, которые составляют контролируют selectize вставляется сразу после выбора элемента, который преобразуется. Поэтому, если вы знаете идентификатор оригинала выбрать, вы должны быть в состоянии получить соответствующую диву с использованием одноуровневых селекторов

page.find(:css, '#test + div.selectize-control + div.selectize-dropdown') 

или

page.first(:css, '#test ~ div.selectize-dropdown') 

если вы уже нажали на div.selective- (или, может быть, вход в нем), тогда элементы в .selectize-dropdown должны быть видны, и вы можете нажать на них

+0

Спасибо за помощь, Том. Фактически нам удалось исправить это с помощью jQuery в конце. Метод, который мы использовали, позволил нам написать конкретные тесты для каждого выпадающего списка :) оцените поддержку, хотя! – Coderrrr

+0

Итак, вы понимаете, что выполнение этого через jquery/execute_script меньше похоже на реального пользователя - может быть, это хорошо для ваших тестов, но все зависит от того, что именно вы тестируете для –

+0

. Я согласен. В нашем случае тестирование больше для завершения данных, чем для пользовательского тестирования, поэтому выполнение сценариев jQuery в порядке – Coderrrr

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