2016-01-12 4 views
6

मैं ड्रैग ड्रॉप एक्शन के लिए स्वचालन परीक्षण के लिए सेलेनियम 2 लाइब्रेरी का उपयोग कर रहा हूं। मैं विंडोज 8 64 बिट, सेलेनियम 2.48.0, ride.py पर चल रहा हूँ। परीक्षण के लिए इस्तेमाल किया ब्राउज़र: फ़ायरफ़ॉक्स और क्रोम नवीनतम स्थिर संस्करणसेलेनियम एक्शनचेन() का उपयोग करते समय लटकता है। फिर एक्शनचैन.क्लिक या माउस_अप

मैं क्या किया इनपुट पाठ और लिंक के साथ एक डमी html पृष्ठ बनाने के लिए, और खींचें कि इनपुट पाठ

यहाँ के भीतर लिंक करने की कोशिश करना था एचटीएमएल है:

class CustomSeleniumLibrary(Selenium2Library): 
... 
    def test_drag(self): 
     self.open_browser("http://localhost:8080/a.html", "firefox") 
     source = self._element_find("//a[@id='source']", True, True) 
     target = self._element_find("//input[@id='target']", True, True) 
     drag = ActionChains(self._current_browser()).click_and_hold(source) 
     moveDum = ActionChains(self._current_browser()).move_by_offset(1,1) 
     move = ActionChains(self._current_browser()).move_to_element_with_offset(target,1,1) 
     #I have also tried ActionChains().drag_and_drop().perform() or make a dummy move move_by_offset followed by move_to_element_with_offset but no use 
     drag.perform() 
     moveDum.perform() 
     move.perform() 

मैं क्या पाया है, जब इस कदम खत्म या mouse_down() खत्म, अगली कार्रवाई कामकाज नहीं कर रहा है:

<div id="wrapper"> 

<input id="target" type="text" style="width:200px; height:50px" /> 
</div> 
<a id="source" href="http://google.com" >drag me </a> 

और यहाँ स्वचालन के लिए मेरी अजगर कोड है मेड, मैं देख सकता हूं कि लिंक पकड़ लिया गया है, लेकिन जब तक मैं अपने माउस को मैन्युअल रूप से ब्राउज़र पर नहीं ले जाता तब तक कोई कदम क्रिया नहीं होती है। उस समय ride.py यूआई फ्लिक और अनुरोध: 16:24:47.042 : DEBUG : POST http://127.0.0.1:58095/hub/session/fa7590b6-396f-4cb5-a08a-e35138a9216e/moveto {"sessionId": "fa7590b6-396f-4cb5-a08a-e35138a9216e", "element": "{6586b4ae-3c51-4e18-bb40-e006af369768}", "xoffset": 1, "yoffset": 1}

हमेशा के लिए लटका हुआ है जब तक मैं ब्राउज़र

पर मैन्युअल रूप से माउस ले जाते हैं आप में से किसी को भी क्या एक ही समस्या है, या मैंने कुछ गलत किया? और क्या आपके पास robotframework selenium2library का उपयोग करके ड्रैगंडड्रॉप सुविधा का उपयोग करने के लिए कोई सुझाव है?

सादर, दान

+0

आप पर अमल करने की जरूरत है काम करता है, तो जानते हैं प्रत्येक श्रृंखला के लिए अलग-अलग 'प्रदर्शन()' विधि को कॉल करने के बजाय एक श्रृंखला में एक करके एक श्रृंखला में आदेश ... – Andersson

उत्तर

2

मैं इसे जांच नहीं कर सकता, लेकिन जैसा कि मैंने इस तरह से ActionChains काम करता है याद रखें:

actions = ActionChains(self._current_browser()) 
actions.click_and_hold(source) 
actions.move_by_offset(1,1) 
actions.move_to_element_with_offset(target,1,1) 
actions.perform() 

मुझे इस कोड को गलत तरीके से

+0

उत्तर के लिए धन्यवाद, लेकिन अच्छी तरह से मैंने यह भी कोशिश की और यह काम नहीं किया। अजीब लगता है कि जब मैं click_and_hold या mouse_down निष्पादित करता हूं तो move_to_element (another_element) का पालन करें, ride.py hanging दिखाता है और जब मैं लोकलसेवर से कनेक्ट करने का प्रयास करता हूं जो सत्र बनाता है और प्रक्रिया को स्थानांतरित करता है, तो यह भी लटकता है (कृपया अनुरोध देखें मैंने प्रश्न में पोस्ट किया) –

+0

क्या आप 'क्रोम' ब्राउज़र का उपयोग करते हैं? – Andersson

+0

मैं क्रोम और फ़ायरफ़ॉक्स दोनों का उपयोग करता हूं –

संबंधित मुद्दे

 संबंधित मुद्दे