c#硒动元无法正常工作(从一个UL移动几个元素)



我目前正在学习如何使用操作类,而我在元素的移动中遇到了一些麻烦,我不确定问题是否在我的代码中或网页中我用来测试。基本上,我想执行多个换句,

Drag1 -> Drag2
Drag2 -> Drag1
Drag3 -> Drag4
Drag4 -> Drag2

因此,最终元素的顺序应该看起来像:

Drag1
Drag4
Drag2
Drag3
Drag5

而不是发生的事情是

Drag1 -> Drag2
Drag2 -> Drag1
Drag1 -> Drag2
Drag2 -> Drag1

前两个操作只是重复,它根本不会触摸drag3 and drag4 ....

这是我的代码:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
using System.Threading;
namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new ChromeDriver();
            Actions actions = new Actions(driver);
            string[] elementIDs =
            {
                "Drag1",
                "Drag2",
                "Drag3",
                "Drag4",
                "Drag5"
            };
            driver.Navigate().GoToUrl("http://testing.todvachev.com/draganddrop/draganddrop.html");
            IWebElement[] elements =
            {
                driver.FindElement(By.Id(elementIDs[0])),
                driver.FindElement(By.Id(elementIDs[1])),
                driver.FindElement(By.Id(elementIDs[2])),
                driver.FindElement(By.Id(elementIDs[3])),
                driver.FindElement(By.Id(elementIDs[4]))
            };
            MoveElementFromTo(actions, elements[0], elements[1], 0, 5);
            Thread.Sleep(2000);
            MoveElementFromTo(actions, elements[1], elements[0], 0, 5);
            Thread.Sleep(2000);
            MoveElementFromTo(actions, elements[2], elements[3], 0, 5);
            Thread.Sleep(2000);
            MoveElementFromTo(actions, elements[3], elements[1], 0, -5);
            Thread.Sleep(5000);
            driver.Quit();
        }
        static void MoveElementFromTo(Actions actions, IWebElement from, IWebElement to, int x, int y)
        {
            actions.ClickAndHold(from)
                   .MoveToElement(to)
                   .MoveByOffset(x, y)
                   .Release()
                   .Build().Perform();
        }
    }
}

Jimevans建议的解决方案就是每次通过新的动作类

MoveElementFromTo(new Actions(driver), elements[0], elements[1], 0, 5);
Thread.Sleep(2000);
MoveElementFromTo(new Actions(driver), elements[1], elements[0], 0, 5);
Thread.Sleep(2000);
MoveElementFromTo(new Actions(driver), elements[2], elements[3], 0, 5);
Thread.Sleep(2000);
MoveElementFromTo(new Actions(driver), elements[3], elements[1], 0, -5);

最新更新