我使用下面的拖放代碼將圖片拖入照片場。這在InternetExplorer中運行正常,但在Firefox或Chrome中不起作用。 我不明白爲什麼不。Selenium在Chrome或Firefox中拖放不起作用
正如你在下面的代碼中看到的,我嘗試了很多不同的方式來進行拖放操作,但是它們都不起作用。 主要問題是釋放圖像後目標未更新。 我看到下降發生,但沒有更新。
有沒有人有任何想法,爲什麼這是?我使用C#和最新的Selenium驅動程序2.39,Chrome驅動程序2.8。
public static void DoDragAndDrop(IWebDriver driver, string dragImageId, string dropFieldId)
{
Console.WriteLine("Drag and drop image '{0}' to the editor {1}..", dragImageId, dropFieldId);
IWebElement dragElement = WebDriverExtensions.TryFindElement(By.Id(dragImageId));
IWebElement dropElement = WebDriverExtensions.TryFindElement(By.Id(dropFieldId));
if(dragElement == null)
Console.WriteLine("dragElement is null");
if(dropElement == null)
Console.WriteLine("dropElement is null");
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView();", dragElement);
Thread.Sleep(500);
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView();", dropElement);
Thread.Sleep(200);
Console.WriteLine("Drag and drop 1");
var builder1 = new Actions(driver);
builder1.MoveToElement(dragElement).ClickAndHold();
builder1.MoveToElement(dropElement).Build().Perform();
Thread.Sleep(2000);
Console.WriteLine("Drag and drop 2");
var builder2 = new Actions(driver);
builder2.DragAndDrop(dragElement, dropElement);
Thread.Sleep(2000);
Console.WriteLine("Drag and drop 3");
var builder3 = new Actions(driver);
builder3.DragAndDrop(dragElement, dropElement).Build().Perform();
IAction dragAndDrop = builder3.ClickAndHold(dragElement)
.MoveToElement(dropElement)
.Release(dropElement)
.Build();
dragAndDrop.Perform();
Thread.Sleep(2000);
Thread.Sleep(1000);
Console.WriteLine("Drag and drop succeeded..");
}
這個固定爲我在Chrome v55.0.2。出於某種原因,元素現在消失,但至少會拖拽元素。 – KthProg
一旦我從builder.release()中刪除元素,一切都很完美。 – KthProg