无法在webdriver中执行dragAndDrop功能

时间:2013-07-15 10:20:31

标签: selenium selenium-webdriver

拖放不起作用,请一些好友帮帮我。

driver.get("http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddrop");

    Actions builder = new Actions(driver);
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.switchTo().frame(driver.findElement(By.className("result_output")));
    System.out.println(driver.findElement(By.tagName("body")).getText());
    Action dropImage = builder.dragAndDrop(driver.findElement(By.id("drag1")), driver.findElement(By.id("div1"))).build();
    dropImage.perform();

2 个答案:

答案 0 :(得分:0)

您似乎没有使用从driver.switchTo()。frame()返回的WebDriver。

试试这个:

driver.get("http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddrop");

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebDriver frameDriver = driver.switchTo().frame(driver.findElement(By.className("result_output")));

Actions builder = new Actions(frameDriver);
Action dropImage = builder.dragAndDrop(frameDriver.findElement(By.id("drag1")), frameDriver.findElement(By.id("div1"))).build();
dropImage.perform();

PS:这可能不是你的问题:“不工作”不够描述。怎么了?你看到了什么?堆栈跟踪?错误信息?你的输出是多少?你真的得到了iframe的内容吗?

答案 1 :(得分:0)

运行此代码后,您可以观察测试通过;但是,我们看不到它。 实际上,拖拽和drop操作成功执行。

Actions builder = new Actions(driver);
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id='iframeResult']")));
        Action dragAndDrop = builder.clickAndHold(driver.findElement(By.id("drag1")))
        .moveToElement(driver.findElement(By.id("div1")))
        .release(driver.findElement(By.id("div1")))
        .build();
dragAndDrop.perform();
Thread.sleep(5000);