Я пытаюсь проверить, что старый демонстрационный сценарий Selenium от бывшего коллеги все еще работает, но столкнулся с любопытной ошибкой. К сожалению, коллеги уже нет рядом, чтобы посоветоваться. Во-первых, вот рассматриваемый скрипт, который должен перетаскивать один элемент поверх другого на странице:
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Supplier;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
public class DragNDrop {
@Test
public void testDragAndDropWithCheck() throws InterruptedException {
System.setProperty("webdriver.gecko.driver","D:\\WebDriver\\geckodriver.exe");
WebDriver driver=new FirefoxDriver();
driver.get("https://the-internet.herokuapp.com/drag_and_drop");
By css = By.cssSelector("div[id^=\"column-\"]");
WebDriverWait wait = new WebDriverWait(driver, 10);
Supplier<List<WebElement>> fetchComponents = () -> wait
.until(ExpectedConditions.presenceOfAllElementsLocatedBy(css));
/**
* Starting check for element position
*/
List<WebElement> startingCheck = fetchComponents.get();
Assert.assertEquals("Starting - Draggable number does not match!", 2, startingCheck.size());
Assert.assertEquals("Starting - A position does not match!", "A", startingCheck.get(0).getText());
Assert.assertEquals("Starting - B position does not match!", "B", startingCheck.get(1).getText());
int index = ThreadLocalRandom.current().nextInt(startingCheck.size());
WebElement from = startingCheck.get(index);
WebElement to = startingCheck.get(1 - index);
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript(
dndScript() + "simulateDragAndDrop(arguments[0], arguments[1])",
from,
to);
/**
* Ending check for element position
*/
List<WebElement> endingCheck = fetchComponents.get();
Assert.assertEquals("Ending - Draggable number does not match!", 2, endingCheck.size());
Assert.assertEquals("Ending - A position does not match!", "A", endingCheck.get(1).getText());
Assert.assertEquals("Ending - B position does not match!", "B", endingCheck.get(0).getText());
}
}
Проблема в этой части:
jse.executeScript(
dndScript() + "simulateDragAndDrop(arguments[0], arguments[1])",
from,
to);
Eclipse выделил dndScript () и выдал сообщение:
Метод dndScript () не определен для типа DragNDrop.
Сначала я подумал, что это произошло из-за отсутствия импорта, поэтому мне пришлось поискать в Google, но я не могу найти никакой информации об этом. Максимум, что я смог найти, - это ссылки на что-то под названием RichFaces, но я не смог найти никаких дополнительных разъяснений (может быть, я сам виноват - я ни в коем случае не эксперт по Selenium / Java).
Есть идеи, что это за история с этой функцией и как правильно реализовать ее в этом скрипте?