Selenium WebDriver中拖放操作的问题

时间:2013-03-09 16:16:11

标签: action selenium-webdriver

我编写了以下代码,但未找到该元素。该网站的链接是http://plugnedit.com/

我尝试了各种方法来定位页面上的元素以尝试拖动对象。它不起作用。我收到“无法找到元素”错误。

我正在使用firefox。

感谢。

        driver.navigate().to("http://plugnedit.com/");
        Actions dragAndDrop = new Actions(driver);
        WebElement itemToDrag = driver.findElement(By.id("p1003upperspan"));

        // drag downwards
        int numberOfPixelsToDragTheScrollbarDown = 10;
        for (int i=10;i<150;i=i+numberOfPixelsToDragTheScrollbarDown){
            // this causes a gradual drag of the scroll bar, 10 units at a time
            dragAndDrop.moveToElement(itemToDrag).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
        }

1 个答案:

答案 0 :(得分:0)

由于您尝试拖放的元素存在于框架内,您需要先切换到包含该元素的框架,然后执行拖放功能。

从你的代码中,我能够发现你想要拖动的图像是带有咖啡杯的图像。该图像出现在网页中的第一帧中。

所以我在拖放代码之前添加了以下单行代码。

driver.switchTo().frame(0); 

//此处框架不包含任何名称。 所以我使用了索引。这里frame(0)表示第一个帧标记。

有效!使用此代码。

driver.navigate().to("http://plugnedit.com/");

     driver.switchTo().frame(0);
        Actions dragAndDrop = new Actions(driver);
        WebElement itemToDrag = driver.findElement(By.id("p1003upperspan"));

        // drag downwards
        int numberOfPixelsToDragTheScrollbarDown = 10;
        for (int i=10;i<150;i=i+numberOfPixelsToDragTheScrollbarDown){
            // this causes a gradual drag of the scroll bar, 10 units at a time
            dragAndDrop.moveToElement(itemToDrag).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
        }