2013-08-01 2 views
1

Я хочу использовать метод capybara drag_to, чтобы вручную сортировать элементы на странице. Ниже мой код:undefined method using Capybara drag_to method

pos2 = find('#first_element') 
target = find(#second_element) 
pos2.drag_to(target) 

Однако я получаю сообщение об ошибке:

undefined method `drag_to' for nil:NilClass (NoMethodError) 

Могу ли я вызывающий метод неправильно? Я пытаюсь реализовать, как определено здесь: http://rubydoc.info/gems/capybara/0.4.0/Capybara/Element#drag_to-instance_method

Пожалуйста, обратите внимание, что я в состоянии использовать другие методы водосвинку FILL_IN, посетить и т.д. без каких-либо проблем ...

Любая помощь будет принята с благодарностью!

+1

Исключение говорит, что 'pos2' равна нулю. Это говорит о том, что вы не находите первый элемент правильно. Это может помочь показать ваш фактический код. –

+0

Не могли бы вы добавить свой код? Очевидно, что предоставленный сниппет не будет работать, так как есть опечатка. Должно быть 'find ('# second_element')' вместо 'find (#second_element)' – lifus

+0

@Justin - Спасибо, вы были правы, я не нашел первый элемент. Я изменил его так, что теперь он использует xpath, поэтому мой код: 'pos2 = find (: xpath, '// * [@ id =" people_container "]/div [1]/img') target = find (: xpath , '// * [@ id = "people_container"]/div [3]/img') pos2.drag_to (target) 'Это не вызывает ошибки, но элементы не перемещаются. :-( – user1523236

ответ

0

#drag_to фактически не будет перемещать отсортированные элементы, так как вы не перемещаете его «в» нигде так, как заданное расстояние в определенном направлении. Selenium реализует #drag_by, но Capybara еще не поддерживается.

Смотрите также:

https://github.com/jnicklas/capybara/issues/222

https://github.com/jnicklas/capybara/issues/119