2010-10-28 32 views

Trả lời

1

Tôi đang sử dụng một bước web như thế này và nó hoạt động tốt:

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

tôi không thể làm giải pháp này hoạt động. Bất cứ ai khác có thành công với điều này? – Francois

+0

Sử dụng rspec + capybara (không phải dưa chuột) và tôi cũng không thể làm việc này. kéo các phần tử hoạt động (như trong phương thức trả về true) nhưng thứ tự trên màn hình không thay đổi (trên mỗi save_and_open_screenshot) hoặc kiểm tra văn bản trực tiếp. – BM5k

2

phương pháp drag_to không làm việc cho tôi. Nhưng tôi đã có thể gây ra phần tử đầu tiên trong danh sách của tôi được kéo vào vị trí cuối cùng bằng cách bao gồm những điều sau đây trong jquery.simulate.js Capybara selen thử nghiệm của tôi sử dụng:

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

Hi @Francois. Tôi đã thử mã của bạn, nhưng thư viện simulate.js không hoạt động với các danh sách có thể sắp xếp. Tôi đã tạo một ví dụ mà tôi đã nhúng các mô phỏng plugin nhưng sửa đổi nó để nó làm chậm các bước. Như bạn sẽ thấy, plugin mô phỏng đang kéo, nhưng có thể sắp xếp không phản hồi chính xác. Truy cập [http://jsbin.com/efuyef/7/edit#javascript,live](http://jsbin.com/efuyef/7/edit#javascript,live) để xem ví dụ trong đó tác vụ có thể kéo và có thể sắp xếp không thành công . Tôi cũng đang cố gắng làm một cái gì đó tương tự cho dưa chuột, vì vậy một giải pháp cho điều này sẽ là tuyệt vời. Làm thế nào bạn có được của bạn để làm việc? –

11

tôi đã phát triển một plugin JQuery để giải quyết vấn đề này, hãy xem jquery.simulate.drag-sortable.js bao gồm một plugin cùng với một bộ các bài kiểm tra và ví dụ.

Hy vọng bạn thấy điều này hữu ích! Phản hồi được hoan nghênh.

Matt

+0

Làm việc như một sự quyến rũ. Cảm ơn! – artemave

+0

Tôi đã thêm một bước dưa chuột ví dụ bằng cách sử dụng nó vào readme của dự án. –

0

Đối với tôi, #drag_to đã hoạt động nhưng quyền hạn của nó dường như bị giới hạn.

Để di chuyển một dòng của bảng UI-sắp xếp được xuống, tôi đã phải tạo ra một bảng với ba hàng, sau đó chạy bước dưa chuột này:

# 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 

này sẽ trao đổi đầu tiên với hàng thứ hai. Giải thích của tôi là Capybara không kéo đủ xa, vì vậy tôi đã cho nó một mục tiêu ngoài mục tiêu thực sự của tôi.

Lưu ý: Tôi đã định cấu hình giao diện người dùng có thể sắp xếp với tolerance: 'pointer '.

Các vấn đề liên quan