我正在尝试从列表中拖放元素,用户需要单击省略号,然后将元素拖放到目标位置。我尝试了不同的方法,但是它不起作用,并且不会引发任何错误。我的测试用例也显示为通过,而没有执行拖放操作。
我希望将企业家拖放到Professor的位置,但是根本不起作用。
下面是相同的html
<div class="row role"><div class="col-sm-7 role-name">Entrepreneur</div><div class="col-sm-5"><!----><span class="one-glober"><!----><!----></span><i class="fa fa-bars pull-right drag-roles"></i></div></div>
<li id="2" draggable="false" class="active" style=""><div class="row role"><div class="col-sm-7 role-name">Professor</div><div class="col-sm-5"><!----><i class="fa fa-bars pull-right drag-roles"></i></div></div></li>
我尝试了以下方法,但没有一个起作用。
@FindBy(xpath="//li[@id='2']//i[@class='fa fa-bars pull-right drag-roles']")
private WebElement source;
@FindBy(xpath="//li[@id='4']//i[@class='fa fa-bars pull-right drag-roles']")
private WebElement destination;
public CharacterRoleDragDropPage dragAndDrop() throws InterruptedException {
wait.until(ExpectedConditions.invisibilityOf(loader));
Actions action= new Actions(driver);
//action.dragAndDrop(source, destination).build().perform();
//action.clickAndHold(source).moveToElement(destination).release().build().perform();
source.click();
//action.clickAndHold(source).dragAndDropBy(source,0, 500).build().perform();
//action.clickAndHold(source).moveByOffset(0, 500).moveToElement(destination).build().perform();
//action.clickAndHold(source).moveToElement(destination).release(source).build().perform();
action.clickAndHold(source).dragAndDrop(source, destination).build().perform();
return this;
}
答案 0 :(得分:1)
我也遇到了drag & drop
的麻烦,并且想出了如果我将moveByOffset
与pause
结合使用的方法,它就会开始起作用。
您可以尝试以下代码:
new Actions(driver)
.moveToElement(source)
.pause(Duration.ofSeconds(1))
.clickAndHold(source)
.pause(Duration.ofSeconds(1))
.moveByOffset(1, 0)
.moveToElement(destination)
.moveByOffset(1, 0)
.pause(Duration.ofSeconds(1))
.release().perform();