2012-06-03 10 views
8

Puedo ejecutar el siguiente código para mover el control deslizante, pero los eventos activados en el navegador no están teniendo lugar.¿Cómo arrastro un control deslizante de jQuery desde Capybara y ChromeDriver?

page.execute_script(%Q($('#slider_handicap').slider('values',1,30))) 

que establece correctamente el mango derecho a 30, pero necesito que se comporte como si estuviera realmente está el ratón y arrastrando el asa a 30 luego soltar.

Respuesta

9

extendí el carpincho arrastrando antes.
Puede mover elementos por un desplazamiento dado.

Usted podría intentar

module CapybaraExtension 
    def drag_by(right_by, down_by) 
    base.drag_by(right_by, down_by) 
    end 
end 

module CapybaraSeleniumExtension 
    def drag_by(right_by, down_by) 
    resynchronize { driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform } 
    end 
end 

::Capybara::Selenium::Node.send :include, CapybaraSeleniumExtension 
::Capybara::Node::Element.send :include, CapybaraExtension 

Y luego

page.find('#slider_handicap').drag_by(30, 0) 

Pero no puede adaptarse a la escala de la barra deslizante.

El original son

Hay unas palabras de precaución.

  • Esta extensión podría depender del tipo de controlador y la versión del controlador .
  • Este tipo de prueba con arrastre podría ocasionar dificultades de mantenimiento.
10

resincronización se ha eliminado de Carpincho 2.0 por lo que la respuesta de user853088 de selenio podría tener este aspecto:

module CapybaraSeleniumExtension 
    def drag_by(right_by, down_by) 
    driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform 
    end 
end 
Cuestiones relacionadas