我正在为以下拖放功能编写演示测试。[参考附件截图] 为此,我写了以下代码:
@Test
public void DragAndDropTest() {
commonSteps();
WebElement drag = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[1]/div/div[1]"));
WebElement drop = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[2]/div/div[1]"));
Actions builder = new Actions(driver);
Action dragAndDrop = builder.clickAndHold(drag).moveToElement(drop).release(drop).build();
dragAndDrop.perform();
}
Webelement drag是针对“Right Now”& WebElement drop用于“快速按下”。
我的代码能够找到这些元素,但不会将“立即生效”框架拖放到“快速按下”框架。
此外,我尝试点击拖动,但点击也无法正常工作。我认为这些是JQuery的可折叠拖放面板。那么如何使用webdriver处理可折叠的拖放。
我应该在代码中做出哪些改变才能实现这一目标?
答案 0 :(得分:2)
Actions builder = new Actions(driver);
builder.clickAndHold(drag).moveToElement(drop).build();
builder.dragAndDrop(drag, drop).perform();
这对我有用。
答案 1 :(得分:0)
我们可以直接使用操作来拖放,而不是点击并按住。
在Java中,
WebElement drag = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[1]/div/div[1]"));
WebElement drop = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[2]/div/div[1]"));
Actions builder = new Actions(driver);
builder.dragAndDrop(drag, drop).build().perform();
//or we can drop by x and y coordinates
builder.dragAndDropBy(drag, 20, 0).build().perform();
答案 2 :(得分:0)
请在下面试试,
使用键盘操作:
Actions builder = new Actions(driver);
builder.keyDown(Keys.CONTROL).click(someElement).click(someOtherElement). keyUp(Keys.CONTROL).build().perform();
使用鼠标操作:
Actions builder = new Actions(driver);
builder.clickAndHold(someElement).moveToElement(otherElement).release( otherElement).build().perform();