我遇到了Selenium WebDriver拖放问题。它不想在滚动条中丢弃webelement。 我试过这个:
new Actions(SeleniumDriver.getDriver())).dragAndDrop(element, target).build().perform();
也尝试使用偏移量:
(new Actions(SeleniumDriver.getDriver()))
.dragAndDropBy(element, xoffset, yoffset).build().perform();
并尝试使用:
Actions builder = new Actions(SeleniumDriver.getDriver());
builder.clickAndHold(element).build().perform();
builder.moveToElement(target).build().perform();
builder.release(target).build().perform();
任何人都知道滚动条的工作解决方案吗?感谢您的帮助。
答案 0 :(得分:1)
确保您尝试拖动正确的元素。 也许该元素不可拖动,它可能是一个可拖动的内部元素。
答案 1 :(得分:1)
我通过使用Java Robot类找到了解决方案。
将镶边切换为全屏:
DesiredCapabilities dc = new DesiredCapabilities();
ChromeOptions options = new ChromeOptions();
options.addArguments("--kiosk", "test-type");
dc.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(dc);
获取起始和目标元素的坐标:
// start coordinates
int startX = new Integer(element.getLocation().x);
int startY = new Integer(element.getLocation().y);
// destination dimensions
int startWidth = new Integer(element.getSize().width);
int startHeight = new Integer(element.getSize().height);
// destination coordinates
int destinationX = new Integer(target.getLocation().x);
int destinationY = new Integer(target.getLocation().y);
// destination dimensions
int destinationWidth = new Integer(target.getSize().width);
int destinationHeight = new Integer(target.getSize().height);
// work out destination coordinates
int endX = Math.round(destinationX + (destinationWidth / 2));
int endY = Math.round(destinationY + (destinationHeight / 2));
int sX = Math.round(startX + (startWidth / 2));
int sY = Math.round(startY + (startHeight / 2));
使用Java Robot类进行拖放:
Thread.sleep(1000);
Robot robot = new Robot();
robot.mouseMove(sX, sY);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(endX, endY);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
答案 2 :(得分:0)
一些想法;
点击并按住后需要小睡眠。我已经测试了需要100毫秒保持的应用程序,直到拖放我们初始化。
它可能是使用HTML 5拖放,我最后尝试过的是Selenium不支持
user3723314