单击并拖动硒(Chrome Webdriver)没有拖动,但会单击并保持



因此,我正在尝试自动化一个可以单击的列表元素,并将其拖动到OL元素的不同部分,然后保存。但是测试将无法进行元素。它不会偏移,也不会移至目标元素。

Chrome Webdriver,Java/Selenium

public void clickAndDragListElement() {
    Actions hold = new Actions(driver);
    hold.clickAndHold(targetHoldElement)
        .moveToElement(targetDestinationElement)
        .release(targetHoldElement)
        .build()
        .perform();
}

(webelements在元素之外定义(

new Actions(driver)
                .moveToElement(source)
                .pause(Duration.ofSeconds(1))
                .clickAndHold(source)
                .pause(Duration.ofSeconds(1))
                .moveByOffset(1, 0)
                .moveToElement(destination)
                .moveByOffset(1, 0)
                .pause(Duration.ofSeconds(1))
                .release().perform();

您是否尝试过这样的事情:

// Create object of actions class
Actions act=new Actions(driver);
// find element which we need to drag
WebElement drag=driver.findElement(By.xpath(".//*[@id='draggable']"));
// find element which we need to drop
WebElement drop=driver.findElement(By.xpath(".//*[@id='droppable']"));
// this will drag element to destination
act.dragAndDrop(drag, drop).build().perform();

我已经尝试过,它对我非常有用:

public class DragAndDrop {
    public static void main(String[] args) {
         System.setProperty("webdriver.chrome.driver", "C:\Users\Ranosys\workspace\MyTest\chromedriver.exe");
         WebDriver driver = new ChromeDriver();
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
          WebDriverWait wait=new WebDriverWait(driver,50 );
         driver.manage().window().maximize();
         driver.get("http://demo.guru99.com/test/drag_drop.html");
       //Element which needs to drag.           
        WebElement From=driver.findElement(By.xpath("//*[@id='credit2']/a"));   
      //Element on which need to drop.      
      WebElement To=driver.findElement(By.xpath("//*[@id='bank']/li"));                 
      //Using Action class for drag and drop.       
      Actions act=new Actions(driver);                  
    //Dragged and dropped.      
      act.dragAndDrop(From, To).build().perform();  

    }
}

这些解决方案都不适合我。@fenio的建议似乎是我用例的最大希望,但我没有运气。取而代之的是,我决定使用硒来获取元素的坐标,然后使用pyautogui(内部使用Xlib(进行单击和鼠标移动,而无头的WebDriver则以售货亭模式运行。这个回旋处的解决方案对我有用。

(我正在为python btw使用硒(