Drag and Drop not working in selenium code

后端 未结 4 1051
半阙折子戏
半阙折子戏 2021-01-29 13:56

Drag and Drop is not working in my selenium code below, can anyone help me?

package selenium;

import java.util.concurrent.TimeUnit;

import org.apache.log4j.Bas         


        
相关标签:
4条回答
  • 2021-01-29 14:30

    Find your own working code block with some simple tweaks in it:

    //BasicConfigurator.configure();
    System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
    WebDriver driver=new FirefoxDriver();
    driver.get("http://jqueryui.com/droppable/");
    driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
    driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@class='demo-frame']")));
    WebElement  from = driver.findElement(By.id("draggable"));
    WebElement  to = driver.findElement(By.id("droppable"));
    new Actions(driver).dragAndDrop(from, to).build().perform();
    
    0 讨论(0)
  • 2021-01-29 14:37

    Few things I observed in your code that

    You need to first replace

    WebElement  from= driver.findElementByXPath("html/body/div[1]");
    

    with

     WebElement from = driver.findElement(By.xpath("html/body/div[1]"))
    

    And

    WebElement  to=driver.findElementByXPath("html/body/div[2]");
    

    with

    WebElement  to = driver.findElement(By.xpath("html/body/div[2]"));
    

    You can use following code to work out:

    driver.navigate().to("http://jqueryui.com/droppable/");
    //Wait for the frame to be available and switch to it
    WebDriverWait wait = new WebDriverWait(driver, 5);
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector(".demo-frame")));
    WebElement Sourcelocator = driver.findElement(By.cssSelector(".ui-draggable"));
    WebElement Destinationlocator = driver.findElement(By.cssSelector(".ui-droppable"));
    dragAndDrop(Sourcelocator,Destinationlocator);
    
    0 讨论(0)
  • 2021-01-29 14:46

    Your drag and drop element present under iFrame tag. So first you need to switch into frame and then perform drag and drop.

    Use below code :

    System.setProperty("webdriver.chrome.driver","D:/Application/chromedriver.exe");
    driver = new ChromeDriver();        
    driver.manage().window().maximize();
    driver.get("http://jqueryui.com/droppable/");               
    driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
    driver.switchTo().frame(0); // either use index or frame element
    WebElement  from= driver.findElement(By.id("draggable"));
    WebElement  to=driver.findElement(By.id("droppable"));
    new Actions(driver).dragAndDrop(from, to).build().perform();
    

    Please note : if element id is there then please use id selector instead of xpath

    0 讨论(0)
  • 2021-01-29 14:46

    You can surely do it using below code. Just ensure that your xpath is correct or else you can't do it using any of the options.

    WebElement from = driver.findElement(By.xpath("html/body/div[1]"));
    WebElement  to = driver.findElement(By.xpath("html/body/div[2]"));
    Actions action1 = new Actions(driver);
    action1.clickAndHold(from).moveToElement(to).release(from).build().perform();
    

    Let me know in case of any issues but try this one it will work :)

    0 讨论(0)
提交回复
热议问题