在此处输入图片说明,我使用以下代码将项目从一个位置拖放到另一位置
By sourceLocatorDragAndDrop = By.cssSelector("#available_objects_parent tbody tr td:eq(4)");
By destinationLocatorDragAndDrop = By.cssSelector("#assigned_objects_parent table tbody");
Actions action = new Actions(webDriver);
action.dragAndDrop(webDriver.findElement(sourceLocatorDragAndDrop) ,webDriver.findElement(destinationLocatorDragAndDrop)).build().perform();
此代码给出以下错误:
org.openqa.selenium.InvalidSelectorException:无效的选择器:An
指定了无效或非法的选择器(会话信息:
chrome = 74.0.3729.131)(驱动程序信息:chromedriver = 2.46.628402
(536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform = Windows NT
10.0.17134 x86_64)(警告:服务器未提供任何堆栈跟踪信息)
谁能说出解决此问题的方法?
最佳答案
您还可以使用JavaScript:
因为在HTML5中,Action draganddrop
函数不起作用,所以我使用了javascript,它对我来说很好用:-
WebElement From = driver.findElement(By.id("sourceImage"));
WebElement To = driver.findElement(By.id("targetDiv"));
//HTML 5
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);";
((JavascriptExecutor)driver).executeScript(java_script, From, To);
使用
Actions
的代码如下:-WebElement From = driver.findElement(By.id("sourceImage"));
WebElement To = driver.findElement(By.id("targetDiv"));
Actions builder = new Actions(driver);
Action dragAnddrop = builder.clickAndHold(From)
.moveToElement(To)
.release(To)
.build();
dragAnddrop.perform();
使用firefox IDE查找xpath。
有关更多信息,请通过this链接。
关于java - 拖放不适用于Java中的Chrome WebDriver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56141490/