2015-01-02 12 views
6

Drag & Drop mit Selen WebDriver auf javaDrag & Drop mit Selen WebDriver auf java

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> 

Ziel: -

<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 mit diesem Code für Drag & Tropfen: -

Actions builder = new Actions(driver); 

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

dragAndDrop.perform(); 

Ich möchte das src-Element in das Zielelement ziehen (als li-Tag in ol des div-Tags einfügen). Wie kann ich als erstes oder letztes oder intermediäres li-Tag in ol von div einfügen (Zielelement).

Ich möchte ein li-Tag erstellen (wie li im Zielelement) und dann das src-Element auf das neu erstellte li-Tag in ol (im Zielelement vorhanden) ziehen.

Wie erstelle ich ein li-Tag in Selen?

+0

Bitte beachten Sie das folgende Video für eine detaillierte Erklärung über Drag & Drop-Betrieb. https://www.youtube.com/watch?v=egdUfivmm-k – Uday

+0

@Uday Ich habe meine Frage aktualisiert. Freundliche Rückmeldung. – karan

+0

@karan Sorry, ich habe gerade Ihre Frage gefunden. Es ist zu spät, aber ich habe einen funktionierenden Code für drag and drop gepostet, wo das Default 'Actions -DragandDrop()' mentod fehlschlägt. –

Antwort

0

Verwenden

Actions builder = new Actions(driver); 

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

Vor diesem src und Messfeld Bitte überprüfen Sie sind richtig Lage, die Objekte zu identifizieren.

Danke. Arun

0

Sie können keine Elemente mit Selen erzeugen. Selenium ist zum Testen von Webanwendungen gedacht, um den Quellcode nicht zu verändern.

Obwohl als Ausnahme können Sie Javascript verwenden, um die Quelle zu ändern.

0

Webdriver wurde für die Browser-Automatisierung entwickelt, nicht für die Änderung von serverseitigem Code oder HTML, die vom Server zurückgegeben werden. Wenn Sie jedoch den HTML-Code auf der Client-Seite vorübergehend ändern möchten, müssen Sie das ausführen, was alle anderen tun, und im Browser JavaScript ausführen.

Sie JavaScript ausführen mit einem WebDriver Beispiel indem sie in ein JavascriptExecutor Gießen:

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

Dann können Sie JavaScript verwenden, um den DOM innerhalb der Seite zu manipulieren, wird auf dem Browser angezeigt, die Ihre WebDriver Instanz derzeit Fahr .

I referrred untenstehenden Link: How to create a li tag dynamically using selenium webdriver on java

0

Sie können, um Drap Element Benutzer für Schleife von einer Position in mehrere Position.

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"); 
     } 

ODER

// Verschieben Element von einer Position zur anderen Position.

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

Es funktioniert für mich ..

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); 

} 

ich konfrontiert Probleme mit Selen Aktionen Drag & Drop. Der obige Code war die Lösung für mich.