gpt4 book ai didi

c# - Selenium 拖放在 Chrome 或 Firefox 中不起作用

转载 作者:行者123 更新时间:2023-11-30 13:57:23 24 4
gpt4 key购买 nike

我使用下面的拖放代码将图片拖入照片域。这在 InternetExplorer 中工作正常,但在 Firefox 或 Chrome 中不起作用。我不明白为什么不呢。

正如您在下面的代码中所看到的,我已经尝试了很多不同的方法来进行拖放操作,但都不起作用。主要问题是发布图像后目标没有更新。我看到下降发生但没有更新。

有人知道这是为什么吗?我正在使用 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..");
}

最佳答案

这就是我现在在 FireFox 中使用它的方式。 Chrome 仍然失败。唯一的区别是我在 MoveToElement 方法中添加了偏移量,如 The Rookies 评论中所示。

var builder = new Actions(driver);
builder.ClickAndHold(dragElement);
builder.MoveToElement(dropElement, 5, 5);
builder.Perform();
Thread.Sleep(250);
builder.Release(dropElement);
builder.Perform();

关于c# - Selenium 拖放在 Chrome 或 Firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com