当有多个元素时,如何拖放硒

问题描述 投票:0回答:1

以下代码无效。 reportDataFields显示项目列表(对于ex abc,abd,abe),我想选择abc并放入目标。它也没有显示任何错误消息。

Actions action = new Actions(driver);
List<WebElement> reportFields = driver.findElements(By.className("reportDataFields"));
WebElement target = driver.findElement(By.id("rptDataSections"));

for (int i = 0; i < reportFields.size(); i++) {

    if (reportFields.get(i).getText().equals(Section)) {
        action.dragAndDrop(reportFields.get(i), target).release().build().perform();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
java selenium-webdriver
1个回答
0
投票

我想你应该在每次使用它时创建一个new Actions接口实例。

使用我的个性化drag and drop功能尝试以下代码:

List<WebElement> reportFields = driver.findElements(By.className("reportDataFields"));
WebElement target = driver.findElement(By.id("rptDataSections"));

for (int i = 0; i < reportFields.size(); i++) {  
    if (reportFields.get(i).getText().equals(Section)) {
       WebElement draggedFrom = reportFields.get(i);
       new Actions(driver)
                .moveToElement(draggedFrom)
                .pause(Duration.ofSeconds(1))
                .clickAndHold(draggedFrom)
                .pause(Duration.ofSeconds(1))
                .moveByOffset(1, 0)
                .moveToElement(target)
                .moveByOffset(1, 0)
                .pause(Duration.ofSeconds(1))
                .release().perform();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.