我尝试通过以下所有方法来实现html元素的拖放功能。但是他们都不适合我。这是具有最新specflow版本的.net框架项目。
1种方式
var actions = new Actions(Context.WebDriver);
actions.DragAndDrop(elementDrag, destination).Release(elementDrag).Build().Perform();
2种方式
actions.MoveToElement(elementDrag, 10, 10, MoveToElementOffsetOrigin.Center)
.ClickAndHold(elementDrag)
.MoveByOffset(5, 5)
.MoveToElement(destination)
.Release(elementDrag)
.Build()
.Perform();
3种方式
actions.MoveToElement(elementDrag, 10, 10, MoveToElementOffsetOrigin.Center)
.ClickAndHold()
.MoveByOffset(50, -300)
.Release(elementDrag)
.Build()
.Perform();
4种方式
actions.ClickAndHold(elementDrag).Build().Perform();
Thread.Sleep(3000);
actions.MoveToElement(destination).Build().Perform();
actions.Release(destination).Build().Perform();
而且我播种的拖放问题是硒的一个已知问题,可以使用javasript实现来解决。不知道那是什么。
谁能建议我一个解决方案。
您可以尝试此版本。
确定来源和名称。
var ele1 = Browser.FindElement(By.Xpath("//div[@class='myDragableItem"));
var ele2 = Browser.FindElement(By.Xpath("//div[@class='myDestination"));
DragAndDrop(ele1, ele2);
public static void DragAndDrop(IWebElement element1, IWebElement element2)
{
WaitForElementEnabled(element1);
WaitForElementEnabled(element2);
var builder = new Actions(driver);
var dragAndDrop = builder.ClickAndHold(element1).MoveToElement(element2).Release(element2).Build();
dragAndDrop.Perform();
}