在此处输入图片说明,我使用以下代码将项目从一个位置拖放到另一位置

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/

10-09 19:22