2012-06-03 8 views
8

मैं स्लाइडर हैंडल को स्थानांतरित करने के लिए निम्न कोड निष्पादित करने में सक्षम हूं, लेकिन ब्राउज़र में ट्रिगर होने वाली घटनाएं नहीं हो रही हैं।मैं कैपिबरा और क्रोमड्राइवर के भीतर से एक jQuery स्लाइडर हैंडल कैसे खींचूं?

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

कि सही ढंग से 30 करने के लिए सही संभाल करता है, पर मैं के रूप में अगर मैं वास्तव में माउस ले जा रहा है और 30 को हैंडल को खींचते तो जारी किया गया यह व्यवहार करने के लिए की जरूरत है।

उत्तर

9

मैंने कैपिबरा को पहले खींच लिया।
यह किसी दिए गए ऑफसेट द्वारा तत्वों को स्थानांतरित कर सकता है।

आप

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 

और फिर

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

की कोशिश कर सकते लेकिन यह स्लाइडर के पैमाने के अनुरूप नहीं हो सकता है।

मूल

सावधानी के कुछ शब्द हैं।

  • यह एक्सटेंशन ड्राइवर के प्रकार और ड्राइवर के संस्करण पर निर्भर हो सकता है।
  • ड्रैगिंग के साथ इस प्रकार का परीक्षण रखरखाव की कठिनाई का कारण बन सकता है।
10

फिर से समकालित Capybara 2.0 से हटा दिया गया तो सेलेनियम के लिए user853088 का जवाब अब इस प्रकार दिखाई देगा:

module CapybaraSeleniumExtension 
    def drag_by(right_by, down_by) 
    driver.browser.action.drag_and_drop_by(native, right_by, down_by).perform 
    end 
end 
संबंधित मुद्दे