Перетащите и поместите в Селен

#selenium #drag-and-drop

Вопрос:

В https://www.globalsqa.com/demo-site/draganddrop/ Мне нужно перетащить картинку с текстом «Высокие Татры» в раздел «Корзина».

 @Test
void task1() {
    System.setProperty("webdriver.chrome.driver", "C:\Users\DELL\Desktop\New folder\chromedriver.exe");
    WebDriver webDriver = new ChromeDriver();
    try {
        webDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        webDriver.get("https://www.globalsqa.com/demo-site/draganddrop/");

        WebElement from = webDriver.findElement(By.xpath("//*[@id="gallery"]/li[1]"));

        WebElement to = webDriver.findElement(By.xpath("//*[@id="trash"]"));

        Actions actions = new Actions(webDriver);
        actions.dragAndDrop(from, to).build().perform();
    } finally {
        webDriver.close();
    }
}
 

Комментарии:

1. веб-элементы от и до находятся внутри рамки. Пытаюсь переключиться на кадр, а затем выполнить перетаскивание()

Ответ №1:

Оба элемента from и to находятся внутри iframe .
Таким образом, чтобы получить доступ к этим элементам, вам сначала нужно переключиться на это iframe . Ваш код будет выглядеть следующим образом:

 @Test
void task1() {
    System.setProperty("webdriver.chrome.driver", "C:\Users\DELL\Desktop\New folder\chromedriver.exe");
    WebDriver webDriver = new ChromeDriver();
    try {
        webDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        webDriver.get("https://www.globalsqa.com/demo-site/draganddrop/");
        
        driver.switchTo().frame(driver.findElement(By.xpath("//div[@rel-title='Photo Manager']//iframe")));

        WebElement from = webDriver.findElement(By.xpath("//*[@id='gallery']/li[1]"));

        WebElement to = webDriver.findElement(By.xpath("//*[@id='trash']"));

        Actions actions = new Actions(webDriver);
        actions.dragAndDrop(from, to).build().perform();
    } finally {
        webDriver.close();
    }
}