2012-06-03 8 views
8

Jestem w stanie wykonać poniższy kod, aby przesunąć uchwyt suwaka, ale zdarzenia wywołane w przeglądarce nie są wykonywane.Jak przeciągnąć uchwyt suwaka jQuery z Capybara i ChromeDriver?

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

To poprawnie ustawia prawy uchwyt do 30, ale muszę to zachowywać się tak, jakbym rzeczywiście biorąc myszą i przeciągając uchwyt do 30, a następnie zwalniając.

Odpowiedz

9

Rozszerzona kapibara przeciągająca wcześniej.
Umożliwia przenoszenie elementów o dane przesunięcie.

można spróbować

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 

A potem

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

Ale to nie może dopasować skalę suwaka.

Oryginalny są

Istnieje kilka słów przestrogi.

  • To rozszerzenie może zależeć od typu sterownika i wersji sterownika .
  • Ten rodzaj testu z przeciąganiem może prowadzić do trudności w utrzymaniu.
10

Resynchronizuj została usunięta z Kapibara 2.0 więc odpowiedź user853088 dla Selen będzie teraz wyglądać tak:

module CapybaraSeleniumExtension 
    def drag_by(right_by, down_by) 
    driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform 
    end 
end 
Powiązane problemy