2015-01-02 6 views
6

खींचें पर सेलेनियम webdriver साथ छोड़ और जावा पर सेलेनियम webdriver साथ छोड़खींचें और जावा

src: -

<div class="dd"><img alt="World" src="test.png" style="margin-top: -5px;width:auto;height:16px;padding-right:5px;"><span>sample</span></div> 

लक्ष्य: -

<div id="hierarchy"> 
<div class="dd" id="tree_nodes"> 
<ol class="dd-list" id="ancestor"> 

<li class="dd-item" ><div class="dd-handle"><img alt="testing" src="test2.png" ><a name="tree" style="margin:5px;">first page</a></div></li> 

<li class="dd-item" ><div class="dd-handle"><img alt="testing" src="test2.png" s><a name="tree" style="margin:5px;">second page</a></div></li> 

<li class="dd-item" ><div class="dd-handle"><img alt="testing" src="test2.png" ><a name="tree" style="margin:5px;">third page</a></div></li> 

<li class="dd-item" ><div class="dd-handle"><img alt="testing" src="test2.png" s><a name="tree" style="margin:5px;">fourth page</a></div></li> 

</ol> 
</div> 


</div> 

Am खींचें के लिए इस कोड का उपयोग और ड्रॉप: -

Actions builder = new Actions(driver); 

Action dragAndDrop = builder.clickAndHold(src).moveToElement(trgt).release(trgt).build(); 

dragAndDrop.perform(); 

मैं स्रोत तत्व को लक्षित करने के लिए src तत्व को खींचना चाहता हूं (div टैग के ol के अंदर एक li टैग के रूप में डालें)। मैं div के div (लक्ष्य तत्व) के अंदर पहले या आखिरी या मध्यवर्ती ली टैग के रूप में कैसे सम्मिलित कर सकता हूं।

मैं एक ली टैग (जैसे लक्ष्य तत्व में ली के रूप में) बनाना चाहता हूं और फिर स्रोत तत्व को ओएल के अंदर नए बनाए गए ली टैग (लक्ष्य तत्व में मौजूद) में खींचें।

मैं सेलेनियम में ली टैग कैसे बना सकता हूं?

+0

कृपया ड्रैग और ड्रॉप ऑपरेशन के बारे में विस्तृत स्पष्टीकरण के लिए नीचे दी गई वीडियो देखें। https://www.youtube.com/watch?v=egdUfivmm-k – Uday

+0

@ आज मैंने अपना प्रश्न अपडेट किया। कृपया उत्तर दें। – karan

+0

@karan क्षमा करें मुझे अभी आपका प्रश्न मिला है। बहुत देर हो चुकी है लेकिन मैंने ड्रैग और ड्रॉप के लिए एक वर्किंग कोड पोस्ट किया है जहां डिफ़ॉल्ट 'क्रियाएं-ड्रैगैंडड्रॉप()' mentod विफल हो जाती है। –

उत्तर

0

उपयोग

Actions builder = new Actions(driver); 

builder.dragAndDrop(src,trgt).build().perform(); 

इस कृपया जांच करें src और trgt से पहले ठीक से वस्तुओं की पहचान करने में सक्षम हैं।

धन्यवाद। अरुण

0

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

हालांकि अपवाद के रूप में, आप स्रोत को संशोधित करने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं।

0

वेबड्राइवर ब्राउज़र स्वचालन के लिए डिज़ाइन किया गया है, सर्वर साइड कोड या सर्वर द्वारा लौटाए गए HTML को बदलने के लिए नहीं। हालांकि, अगर आप क्लाइंट पक्ष पर अस्थायी रूप से HTML को बदलना चाहते हैं, तो आपको वह करना होगा जो हर कोई करता है और ब्राउज़र पर कुछ जावास्क्रिप्ट चलाता है।

आप एक JavascriptExecutor में कास्टिंग द्वारा एक WebDriver उदाहरण के साथ JavaScript निष्पादित कर सकते हैं:

WebDriver driver; // Assigned elsewhere 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("return document.title"); 

तो फिर तुम पृष्ठ के अंदर डोम हेरफेर करने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं जो आपके ब्राउज़र WebDriver उदाहरण ड्राइविंग वर्तमान में है पर दिखाया जा रहा ।

मैं लिंक नीचे referrred: How to create a li tag dynamically using selenium webdriver on java

0

आप कर सकते हैं कई स्थिति के लिए एक स्थान से छोड़ें तत्व को पाश के लिए उपयोगकर्ता।

public static void dragdrop(){ 
    WebElement slider = driver.findElement(By.id("dragdrop")); 
    int width=slider.getSize().getWidth(); // Width of SLider 
    Actions move = new Actions(driver); 
    move.moveToElement(slider, ((width*10)/100), 0).click(); // move to a specific point on the dragpoint 
    move.build().perform(); 
     System.out.println("Slider moved"); 
     } 

या

// अन्य स्थिति के लिए एक स्थान से तत्व ले जाएँ।

public void dragdrop(){ 
    WebElement element = driver.findElement(By.name("source")); 

    WebElement target = driver.findElement(By.name("target")); 

    (new Actions(driver)).dragAndDrop(element, target).perform(); 

} 
0

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

public static void DragAndDropJS(WebElement source, WebElement destination, WebDriver driver) throws Exception 
{ 
    JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("function createEvent(typeOfEvent) {\n" +"var event =document.createEvent(\"CustomEvent\");\n" +"event.initCustomEvent(typeOfEvent,true, true, null);\n" +"event.dataTransfer = {\n" +"data: {},\n" +"setData: function (key, value) {\n" +"this.data[key] = value;\n" +"},\n" +"getData: function (key) {\n" +"return this.data[key];\n" +"}\n" +"};\n" +"return event;\n" +"}\n" +"\n" +"function dispatchEvent(element, event,transferData) {\n" +"if (transferData !== undefined) {\n" +"event.dataTransfer = transferData;\n" +"}\n" +"if (element.dispatchEvent) {\n" + "element.dispatchEvent(event);\n" +"} else if (element.fireEvent) {\n" +"element.fireEvent(\"on\" + event.type, event);\n" +"}\n" +"}\n" +"\n" +"function simulateHTML5DragAndDrop(element, destination) {\n" +"var dragStartEvent =createEvent('dragstart');\n" +"dispatchEvent(element, dragStartEvent);\n" +"var dropEvent = createEvent('drop');\n" +"dispatchEvent(destination, dropEvent,dragStartEvent.dataTransfer);\n" +"var dragEndEvent = createEvent('dragend');\n" +"dispatchEvent(element, dragEndEvent,dropEvent.dataTransfer);\n" +"}\n" +"\n" +"var source = arguments[0];\n" +"var destination = arguments[1];\n" +"simulateHTML5DragAndDrop(source,destination);",source, destination); 
    Thread.sleep(1500); 

} 

मैं और सेलेनियम क्रिया के साथ मुद्दों को खींचें ड्रॉप का सामना करना पड़ा। उपरोक्त कोड मेरे लिए समाधान था।

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