Надеюсь, у вас все хорошо,
Я пытаюсь перетащить и добавить элемент из FrameOne в FrameTwo, но не могу этого сделать. Пожалуйста, помогите мне понять концепцию и то, что я делаю неправильно, и мне нужночтобы выполнить задачу, используя только класс Actions.
Вот URL-адреса:
- https://www.w3schools.com/html/html5_draganddrop.asp
Здесь элемент находится в divblock Я могу получить все локаторы и выполнить все другие действия, используя класс Actions, но не могу перетащить элемент.
2. https://codepen.io/rjsmer/full/vvewWp
Здесь я пытаюсьпереместить элемент из первого кадра во второй, но я не могу этого сделать.
Я пробовал методы drangAndDrop (), ClickAndHold (), искал так много решений, смотрю видео на одном и том же сбезуспешно.
package DragAndDropPracticeFrame;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import static io.github.bonigarcia.wdm.DriverManagerType.CHROME;
public class DragDropFrame {
public static void main(String[] args) throws InterruptedException {
WebDriverManager.getInstance(CHROME).setup();
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://codepen.io/rjsmer/full/vvewWp");
driver.switchTo().frame("result");
System.out.println("Inside First Frame.");
WebElement frameOne =
driver.findElement(By.cssSelector("iframe.dragFrame.dragDrop"));
driver.switchTo().frame(frameOne);
System.out.println("Inside Frame 3");
WebElement elementOne = driver.findElement(By.id("dragFrame-0"));
System.out.println("First element found: " + elementOne.getText());
Actions builder = new Actions(driver);
driver.switchTo().defaultContent();
System.out.println("Inside main page");
driver.switchTo().frame("result");
//System.out.println("Switched to Frame First");
WebElement frameThree =
driver.findElement(By.xpath("//iframe[@class='dropFrame dragDrop']"));
Action action =
builder.clickAndHold(elementOne)
.moveToElement(frameThree)
.release(frameThree).build();
//driver.switchTo().frame(frameTwo);
//System.out.println("Switched to frame 3");
action.perform();
//driver.switchTo().defaultContent();
//builder.perform();
}
}
Еще одна попытка:
WebDriverManager.getInstance(CHROME).setup();
WebDriver driver = new ChromeDriver();
driver.get("https://codepen.io/rjsmer/full/vvewWp");
driver.switchTo().frame(0);
WebElement frameOne = driver.findElement(By.xpath("//iframe[@class='dragFrame dragDrop']"));
WebElement frameTwo = driver.findElement(By.xpath("//iframe[@class='dropFrame dragDrop']"));
driver.switchTo().frame(frameOne);
// identify element in first frame
WebElement elementOne = driver.findElement(By.id("dragFrame-0"));
// Use Actions class for tap and hold
Actions actions = new Actions(driver);
Actions action = actions.clickAndHold(elementOne);
actions.build();
action.perform();
// switch to the second frame
driver.switchTo().frame(frameTwo);
// move element to another frame
WebElement elementTwo = driver.findElement(By.xpath("//body[@class='frameBody dropFrameBody']"));
Actions actions2 = new Actions(driver);
Actions action2 = actions2.moveToElement(elementTwo);
actions2.release(elementOne);
actions2.build();
action2.perform();
Ожидается: элемент должен переместиться в кадр 3 Фактическое: ничего не произошло.