Selenium:如何使用 C# 在 Chrome 中拖放

问题描述 投票:0回答:3

以下代码在 Firefox 中有效,但在 Chrome 中无效。从我在网上找到的信息来看,Actions.DragAndDrop 似乎不适用于 Chrome。我正在尝试移动 SVG 元素。

还有其他选择吗?

  var action = new Actions(driver);
  action
    .DragAndDropToOffset(middle, 100, 100)
    .Build()
    .Perform();

Selenium.Webdriver:v3.141.0

Selenium.Webdriver.ChromeDriver:v76.0.3809.68

Selenium.Firefox.Webdriver:v0.24.0

Chrome:版本 76.0.3809.100(官方版本)(64 位)

selenium selenium-webdriver svg selenium-chromedriver
3个回答
1
投票

这是我在 Chrome 中使用的。请记住,使用拖放时,您需要一个要单击的起始元素,以及一个要放置它的第二个元素。

致电:

    var ele1 = Driver.FindElement(By.Xpath("//button[@class='cz2__images__image-content cz2__images--draggable']"));
    var ele2 = Driver.FindElement(By.Xpath("//button[@class='Destination']"));

    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(element1).Build();
        dragAndDrop.Perform();
    }

或者....

    public static void test ()
    {
        var test1 = _webDriver.FindElement(By.Id("myid"));
        var test2 = _webDriver.FindElement(By.Id("myid2"));

        Actions builder1 = new Actions(_webDriver);
        IAction dragAndDrop1 = builder1.ClickAndHold(test1).MoveToElement(test2).Release(test1).Build();
        dragAndDrop1.Perform();
    }

0
投票
 public void DragAndDropItem(IWebElement from, IWebElement to)
 {
     Actions action = new Actions(_driver);
     action.DragAndDrop(from, to).Build().Perform();
 }

0
投票

var element1 = driver.FindElement(By.Id("column-a")); var element2 = driver.FindElement(By.Id("column-b"));

动作构建器=新动作(驱动程序); IAction DragAndDrop1 = builder.ClickAndHold(element2).MoveToElement(element1).Release(element1).Build(); DragAndDrop1.Perform();

© www.soinside.com 2019 - 2024. All rights reserved.