簡體   English   中英

拖放功能在Selenium Webdriver中不起作用

[英]Drag and Drop functionality is not working in selenium Webdriver

我正在嘗試學習硒。 我在以下網站上可以使用拖放功能http://html5demos.com/drag# 我正在嘗試使用以下代碼進行拖放。 但是無法做到這一點。 任何幫助,將不勝感激。

代碼1

System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"\\drivers\\IEDriverServer.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://html5demos.com/drag");
driver.manage().window().maximize();
List<WebElement> ele1=driver.findElements(By.id("bin"));
System.out.println(ele1.size());
System.out.println(ele1.get(0).isDisplayed());
WebElement ele2=driver.findElement(By.id("one"));
System.out.println(ele1.get(0).isDisplayed());
System.out.println(ele2.isDisplayed());
Actions builder = new Actions(driver);
Action dragAndDrop = builder.clickAndHold(ele2)
.moveToElement(ele1.get(0))
.release(ele2)
.build();
dragAndDrop.perform(); 

代碼2

(new Actions(driver)).dragAndDrop(ele2, ele1.get(0)).perform();

代碼3

Actions builder = new Actions(driver);
builder.dragAndDropBy(ele2, -50, 35).perform();

目前在網絡驅動程序中不支持HTML5的拖放。 https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/3604

找到了可以在HTML5中進行拖放的JavaScript

 final String java_script = "var src=arguments[0],tgt=arguments[1];var dataTransfer={dropEffe" + "ct:'',effectAllowed:'all',files:[],items:{},types:[],setData:fun" + "ction(format,data){this.items[format]=data;this.types.append(for" + "mat);},getData:function(format){return this.items[format];},clea" + "rData:function(format){}};var emit=function(event,target){var ev" + "t=document.createEvent('Event');evt.initEvent(event,true,false);" + "evt.dataTransfer=dataTransfer;target.dispatchEvent(evt);};emit('" + "dragstart',src);emit('dragenter',tgt);emit('dragover',tgt);emit(" + "'drop',tgt);emit('dragend',src);"; driver.get("http://html5demos.com/drag"); WebElement LocatorFrom =driver.findElement(By.id("three")); WebElement LocatorTo = driver.findElement(By.id("bin")); ((JavascriptExecutor)driver).executeScript(java_script, LocatorFrom, LocatorTo); 

嘗試這個:

System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"\\drivers\\IEDriverServer.exe"); 
WebDriver driver=new ChromeDriver(); 
driver.get("http://html5demos.com/drag"); 
driver.manage().window().maximize(); 
List<WebElement> ele1=driver.findElements(By.id("bin"));
System.out.println(ele1.size()); 
System.out.println(ele1.get(0).isDisplayed()); 
WebElement ele2=driver.findElement(By.id("one"));
System.out.println(ele1.get(0).isDisplayed()); 
System.out.println(ele2.isDisplayed()); 
Actions builder = new Actions(driver); 
Action dragAndDrop = builder.clickAndHold(ele2).moveToElement(ele1.get(0)).release().build();      
dragAndDrop.perform();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM