当目标元素和目标元素在不同的帧中时,如何使用selenium-webdriver执行拖放操作?

9ik*_*han 12 selenium automated-tests selenium-webdriver aem

我必须拖动图像并将其放入CQ5组件中.图像和组件位于不同的帧中.

以下是无效的代码,因为destination当目标框架处于活动状态时无法找到webelement .

new Actions(driver).dragAndDrop(target, destination).perform();

我还尝试在动作之间切换帧:

    Actions builder = new Actions(driver);
    Actions action = builder.clickAndHold(target);
    driver.switchTo().frame("newFrame"); //switching frames
    builder.moveToElement(destination);
    builder.release(destination);
    builder.build();
    action.perform();
Run Code Online (Sandbox Code Playgroud)

这也不起作用.然后,我尝试通过偏移移动图像

new Actions(driver).dragAndDropBy(target,  x, y).perform(); // x and y 
Run Code Online (Sandbox Code Playgroud)

这移动了图像,但组件没有捕获它,可能因为动作太快了.有没有办法可以做这样的拖拽?

提前致谢.

ada*_*her 6

你需要把它分成两部分.

// grab your element
Actions builder = new Actions(driver);
Actions action = builder.clickAndHold(target);
builder.build();
action.perform();

// switch to the frame (you havent told webdriver to un-grab
driver.switchTo().frame("newFrame"); //switching frames

// move and drop
Actions builder = new Actions(driver);
Actions action = builder.moveToElement(destination);
builder.release(destination);
builder.build();
action.perform();
Run Code Online (Sandbox Code Playgroud)