2015-01-02 18 views
6

ドラッグにセレンwebdriverをして​​ドロップすると、Javaをセレンwebdriverをして​​ドラッグおよび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> 

ターゲット: -

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

アムドラッグのためにこのコードを使用し、ドロップ: -

Actions builder = new Actions(driver); 

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

dragAndDrop.perform(); 

src要素をターゲット要素にドラッグしたい(divタグの中にliタグとして挿入する)。どのようにdivの最初のまたは最後または中間のliタグとして挿入することができます(ターゲット要素)。

ターゲット要素にliと同じようにliタグを作成し、src要素をolの中に新しく作成したliタグ(ターゲット要素に存在する)にドラッグしたいとします。

セレンでliタグを作成するにはどうすればよいですか?この前

+0

ドラッグアンドドロップ操作の詳細については、下記の動画をご覧ください。 https://www.youtube.com/watch?v=egdUfivmm-k – Uday

+0

@Uday質問を更新しました。親切に答えてください。 – karan

+0

@karan申し訳ありませんあなたの質問が見つかりました。あまりにも遅いですが、デフォルトの 'Actions -DragandDrop()'の指示が失敗したところでドラッグアンドドロップのための作業コードを投稿しました。 –

答えて

0

使用

Actions builder = new Actions(driver); 

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

srcとTRGTが適切にオブジェクトを識別することができます確認してください。

ありがとうございました。 Arun

0

Seleniumを使用して要素を作成することはできません。 Seleniumは、ソースコードを変更しないようにWebアプリケーションをテストするためのものです。

例外として、javascriptを使用してソースを変更することはできますが、

0

Webdriverはブラウザの自動化用に設計されており、サーバー側のコードやサーバーから返されたHTMLを変更するためのものではありません。しかし、クライアントサイドでHTMLを一時的に変更したい場合は、ほかの人がやることをしてブラウザ上でJavaScriptを実行する必要があります。

あなたはJavascriptExecutorにそれをキャストしてwebdriverをインスタンスでJavaScriptを実行することができます

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

次に、あなたがあなたのwebdriverをインスタンスが現在運転しているブラウザ上に表示されているページ内のDOMを操作するためにJavaScriptを使用することができます。

私はリンクの下にreferrred: How to create a li tag dynamically using selenium webdriver on java

0

次のことができ、複数の位置にある位置からDRAP要素のforループのユーザー。

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

OR

//他の位置にある位置から要素を移動します。

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

} 

セレンアクションをドラッグ&ドロップして、私は問題に直面しました。上記のコードは私の解決策でした。

関連する問題