2011-09-01 12 views
6

कोई भी जानता है कि सेलेनियम रूबी वेबड्राइवर में किसी तत्व पर कैसे होवर करें?सेलेनियम रूबी में एक तत्व (माउसओवर) कैसे होवर करें?

मेरे कोड इस तरह है:

el = driver.find_element(:css => "#foo") 
driver.move_to el # How do I trigger a mouseover event on this element? 

मैं 32-बिट Firefox के साथ सेलेनियम-webdriver मणि उपयोग कर रहा हूँ लिनक्स में।

उत्तर

3

बाहर कर देता है जवाब है:

driver.move_to(el).perform 

मैं .perform भूल गया।

+0

चेक @ Seanny123 और वहाँ क्यों इस अब काम कर सकते हैं के बारे में। –

3

यह मेरे लिए काम करता है:

driver.mouse.move_to el 
+0

@ Seanny123 और इस टिप्पणी पर नीचे दी गई टिप्पणी के बारे में उत्तर दें कि यह अब क्यों काम कर सकता है। –

5

मैं driver.action.move_to(el).perform जो अन्य उत्तर से कभी तो थोड़ा अलग है इस्तेमाल किया, इसलिए मैंने सोचा कि मैं इसे पूर्णता के लिए शामिल किया जाएगा।

+2

वर्तमान में सेलेनियम ने 'move_to' फ़ंक्शन को बंद कर दिया है, इसलिए अब माउस कार्यों तक पहुंचने के लिए आपको' .action' का उपयोग करने की आवश्यकता है। –

+0

@ डैनसबिन क्या आप इसे स्पष्ट करने के लिए एक संपादन का प्रस्ताव देना चाहते हैं? मैं इसे पूरी तरह से स्वीकार करूंगा। – Seanny123

1

आपको Selenium's Action Builder का उपयोग करने के लिए अधिक जटिल कार्रवाइयों जैसे कि होवरिंग (जो seanny123 का उत्तर दिखा रहा है) तक पहुंचने की आवश्यकता है।

इसके अलावा, अगर आप एक हॉवर के साथ काम कर रहे हैं, बाधाओं आप गतिशील रूप से प्रतीक्षा करने के लिए यह अपने अगले कार्रवाई करने (जैसे, एक स्पष्ट इंतजार का प्रयोग करके) से पहले प्रदर्शित करने के लिए की आवश्यकता होगी रहे हैं।

मैं एक साथ ऐसा करने के तरीके पर एक उदाहरण डाल - आप पूर्ण लेख here देख सकते हैं।

1

एक तत्व मंडराना करने के लिए:

driver.action.move_to(element).perform 
# e.g.  
driver.action.move_to(driver.find_element(css: 'a')).perform 

एक विशिष्ट स्थान पर एक तत्व मंडराना करने के लिए: मेरी टिप्पणी

driver.action.move_to(element, mouse_x, mouse_y).perform 
# e.g.  
driver.action.move_to(driver.find_element(css: 'a'), 100, 100).perform 
संबंधित मुद्दे