我正在尝试编写一个黄瓜/水豚测试来订购一些物品,然后将它们保存起来。关于如何做到这一点的任何想法?
答案 0 :(得分:12)
答案 1 :(得分:2)
drag_to方法对我不起作用。但是通过使用jquery.simulate.js在我的capybara selenium测试中包含以下内容,我能够将列表中的第一个元素拖到最后位置:
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});
});
}
答案 2 :(得分: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
答案 3 :(得分:0)
对我来说,#drag_to
确实有效,但是它的力量似乎有限。
为了向下移动UI可排序表格行,我必须创建一个包含三行的表格,然后运行此Cucumber步骤:
# 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
这会将第一行与第二行交换。我的解释是,水豚没有拖得足够远,所以我给了它一个超出我实际目标的目标。
注意:我已使用tolerance: 'pointer
'配置了UI排序。
答案 4 :(得分:0)
我遵循@codener的解决方案,它可以正常工作!我在代码中所做的唯一更改是使用tolerance: 'pointer'
配置UI可排序。
@codener的答案中描述的限制也没有消失。 (我使用的是水豚2.18.0。)不需要第三行就可以将第一行与第二行交换。
When /^I drag the first table row down$/ do
element = find('tbody tr:nth-child(1)')
target = find('tbody tr:nth-child(2)')
element.drag_to target
end