加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么拖放在Selenium Webdriver中不起作用?

发布时间:2020-12-14 05:06:45 所属栏目:Java 来源:网络整理
导读:我试图使用Selenium WebDriver将元素拖到另一个元素中,但是它不起作用.我尝试了所有的解决方案,我可以在互联网上找到,但没有一个解决方案似乎在为我工作. WebElement sourceelement = driver.findElement(By.cssSelector("XXX"));WebElement destelement = d
我试图使用Selenium WebDriver将元素拖到另一个元素中,但是它不起作用.我尝试了所有的解决方案,我可以在互联网上找到,但没有一个解决方案似乎在为我工作.
WebElement sourceelement = driver.findElement(By.cssSelector("XXX"));
WebElement destelement = driver.findElement(By.cssSelector("YYY"));

代码1: –

Actions builder = new Actions( _controls.getDriver());
builder.dragAndDrop(sourceelement,destelement);

代码2: –

Actions builder = new Actions(_controls.getDriver());
Action dragAndDrop =
builder.clickAndHold(sourceelement).moveToElement(destelement).release(destelement).build();
Thread.sleep(2000);
dragAndDrop.perform()

CODE3: –

Point coordinates1 = sourceelement.getLocation();
Point coordinates2 = destelement.getLocation();  
Robot robot = new Robot();           
robot.mouseMove(coordinates1.getX(),coordinates1.getY());
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(coordinates2.getX(),coordinates2.getY());
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(2000);

码4: –

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)_controls.getDriver()).executeScript(java_script,sourceelement,destelement);
        Thread.sleep(2000);

以上代码都没有为我工作.所有上述运行没有任何错误,但拖放并没有发生在应用程序中.任何人有任何其他解决方案?谢谢.

解决方法

在你的代码1:
不调用perform()方法,
它应该是

Actions builder = new Actions( _controls.getDriver());

builder.dragAndDrop(sourceelement,destelement).perform();

在你的代码2:我不认为你需要调用release()

请在发布之前搜索similar questions.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读