2010-10-28 1 views

ответ

1

Я использую веб-шаг, как это, и это работает прекрасно:

When /^I drag "([^"]*)" on top$/ do |name| 
    item = Item.find_by_name(name) 
    sleep 0.2 
    src = find("#item_id_#{item.id}") 
    dest = find("div.title") 
    src.drag_to(dest) 
end 
+1

Я не мог заставить это решение работать. У кого-то еще есть успех? – Francois

+0

Использование rspec + capybara (не огурец), и я не могу заставить это работать. перетаскивание элементов работает (как в методе возвращает true), но порядок на экране не изменяется (за одно сохранение save_and_open_screenshot) или напрямую проверяется текст. – BM5k

2

метод drag_to не работает для меня. Но я был в состоянии вызвать первый элемент в моем списке, чтобы быть втянуто в последнюю позицию, в том числе следующего в моей водосвинке тест Селена с помощью jquery.simulate.js:

page.execute_script %Q{ 
    $.getScript("/javascripts/jquery.simulate.js", function(){ 
    distance_between_elements = $('.task:nth-child(2)').offset().top - $('.task:nth-child(1)').offset().top; 
    height_of_elements = $('.task:nth-child(1)').height(); 
    dy = (distance_between_elements * ($('.task').size() - 1)) + height_of_elements/2; 

    first = $('.task:first'); 
    first.simulate('drag', {dx:0, dy:dy}); 
    }); 
}     
+0

Привет @Francois. Я пробовал ваш код, но библиотека simulate.js не работает со списками сортировки. Я создал пример, где я встроил модуль имитации, но изменил его так, чтобы он замедлял шаги. Как вы увидите, плагин имитации перетаскивается, но сортировка не отвечает правильно. Перейдите на страницу http://jsbin.com/efuyef/7/edit#javascript,live](http://jsbin.com/efuyef/7/edit#javascript.live), чтобы увидеть пример, где draggable работает и сортируется. , Я тоже пытаюсь сделать что-то подобное для Cucumber, так что решение этого было бы здорово. Как вы заработали? –

11

Я разработал плагин JQuery, чтобы решить эту проблему, проверьте jquery.simulate.drag-sortable.js, который включает в себя плагин вместе с набором тестов и примеров.

Упование вы считаете это полезным! Обратная связь приветствуется.

Matt

+0

Работает как шарм. Благодаря! – artemave

+0

Я добавил пример огуречного шага, используя это в readme проекта. –

0

Для меня, #drag_to сделал работу, однако, его полномочия, как представляется, ограничены.

Для того, чтобы переместить UI-сортировку строки таблицы вниз, я должен был создать таблицу с тремя строками, а затем запустить этот шаг огурца:

# Super-primitive step 
When /^I drag the first table row down$/ do 
    element = find('tbody tr:nth-child(1)') 
    # drag_to needs to drag the element beyond the actual target to really perform 
    # the reordering 
    target = find('tbody tr:nth-child(3)') 

    element.drag_to target 
end 

Это переставляет первый со второй строкой. Моя интерпретация заключается в том, что Капибара не тянется достаточно далеко, поэтому я дал ей цель, превышающую мою реальную цель.

Примечание: Я настроил UI-сортировку с помощью tolerance: 'pointer '.

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