दिलचस्प पोस्ट
PHP में स्ट्रिंग के रूप में दिए गए फार्मूला का मूल्यांकन कैसे करें? MySql: MyISAM बनाम Inno DB! __प्रोटो__ वी.एस. जावास्क्रिप्ट में प्रोटोटाइप ठेठ परीक्षण निर्देशिका संरचना के साथ एकजुट चल रहा है मैं किस प्रकार एक MySQL डाटाबेस / टेबल / कॉलम सेट कर सकता हूं? सी ++ में फ़ैक्ट्री विधि पैटर्न को कैसे लागू किया जाए मैं कस्टम OpenSSL के साथ पायथन 3.4 कैसे संकलित करूं? एक समारोह में बनाए जाने पर टंकिनर छवि क्यों नहीं दिखाई देती? काम एफ # स्निपेट्स पूर्णांक प्रभाग: आप डबल कैसे बनाते हैं? Scala में एक var और val परिभाषा के बीच अंतर क्या है? लिनक्स पर्यावरण चर नामों में अनुमत वर्ण जब गतिविधि / टुकड़ा रोका गया है, तब हैंडलर संदेशों को कैसे संभालना है क्या मुझे http मिल अनुरोधों के लिए एक सामग्री प्रकार की आवश्यकता है? डुप्लिकेट कुंजी पर MySQL – अंतिम प्रविष्टि आईडी?

कैसे सेलेनियम Webdriver में HTML5 खींचें और ड्रॉप अनुकरण करने के लिए?

मैं पायथन 2.7 और सेलेनियम 2.44 का उपयोग कर रहा हूँ।

मैं सेलेनियम डब्लूडी में ड्रैग एंड डॉप एक्शन को स्वचालित करना चाहता हूं लेकिन अन्य संबंधित पोस्टों के अनुसार एचटीएमएल 5 में क्रियाएं सेलेनियम द्वारा समर्थित नहीं हैं। पायथन में खींचें और ड्रॉप अनुकरण करने का कोई तरीका है?

यहां मैंने कोशिश की है कोड है:

driver = webdriver.Firefox() driver.get("http://html5demos.com/drag") target = driver.find_element_by_id("one") source = driver.find_element_by_id("bin") actionChains = ActionChains(driver) actionChains.drag_and_drop(target, source).perform() 

और यह काम नहीं किया।

वेब के समाधान से एकत्रित समाधान "कैसे सेलेनियम Webdriver में HTML5 खींचें और ड्रॉप अनुकरण करने के लिए?"

हां, HTML5 "ड्रैग एंड ड्रॉप" वर्तमान में सेलेनियम द्वारा समर्थित नहीं है :

  • समस्या 3604: सेलेनियम वेबड्रिवर के साथ HTML5 खींचें और ड्रॉप करें

सुझाए गए कार्यों में से एक एचटीएमएल खींचें और जावास्क्रिप्ट के माध्यम से ड्रॉप करना है:

  • डाउनलोड करें drag_and_drop_helper.js
  • स्क्रिप्ट को execute_script() माध्यम से execute_script() simulateDragDrop() execute_script() फंक्शन एक source तत्व पर target तत्व को एक dropTarget रूप में dropTarget

नमूना कोड:

 with open("drag_and_drop_helper.js") as f: js = f.read() driver.execute_script(js + "$('#one').simulateDragDrop({ dropTarget: '#bin'});") 

समस्या यह है कि यह आपके मामले में "जैसा है" में काम नहीं करेगा क्योंकि इसकी आवश्यकता है jQuery


अब हमें यह पता लगाने की आवश्यकता है कि गतिशील रूप से jQuery लोड कैसे करें । शुक्र है, एक समाधान है

पायथन में काम कर रहे पूरा उदाहरण:

 from selenium import webdriver jquery_url = "http://code.jquery.com/jquery-1.11.2.min.js" driver = webdriver.Firefox() driver.get("http://html5demos.com/drag") driver.set_script_timeout(30) # load jQuery helper with open("jquery_load_helper.js") as f: load_jquery_js = f.read() # load drag and drop helper with open("drag_and_drop_helper.js") as f: drag_and_drop_js = f.read() # load jQuery driver.execute_async_script(load_jquery_js, jquery_url) # perform drag&drop driver.execute_script(drag_and_drop_js + "$('#one').simulateDragDrop({ dropTarget: '#bin'});") 

जहां jquery_load_helper.js में शामिल हैं:

 /** dynamically load jQuery */ (function(jqueryUrl, callback) { if (typeof jqueryUrl != 'string') { jqueryUrl = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'; } if (typeof jQuery == 'undefined') { var script = document.createElement('script'); var head = document.getElementsByTagName('head')[0]; var done = false; script.onload = script.onreadystatechange = (function() { if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) { done = true; script.onload = script.onreadystatechange = null; head.removeChild(script); callback(); } }); script.src = jqueryUrl; head.appendChild(script); } else { callback(); } })(arguments[0], arguments[arguments.length - 1]); 

परिणाम के पहले / बाद:

जावा संस्करण नीचे कमिट है

https://github.com/vikramvi/Selenium-Java/commit/a1354ca5854315fded8fc80ba24a4717927d08c7