Selenium拖放在隐形位置

时间:2017-02-14 21:46:53

标签: java selenium firefox selenium-webdriver webdriver

我正在尝试在selenium中实现拖放。这是我想出的一个新方案,在我将源拖动到放置位置并保持它之前,放置位置是不可见的。它看起来像这样: enter image description here

我尝试了几件事,比如

情景1:

Actions builder = new Actions(driver);
builder.clickAndHold(curSourceElement).build().perform();
builder.moveToElement(curTargetElement).build().perform();
builder.release(curTargetElement).build().perform();    

情景2:

builder.clickAndHold(curSourceElement).build().perform();
builder.moveToElement(curTargetElement).clickAndHold(curTargetElement).moveByOffset(0,500).release(curTargetElement).build().perform();

以及许多其他方式,通过移动到删除位置并添加等待,但它们似乎都没有工作。

当放置位置不可见时,是否还有其他方法可以执行拖放操作。

任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

我的第一次尝试看起来像这样:

Size currentWinSize = driver.Manage().Window.Size;
driver.Manage().Window.Maximize(); //Remove window size as a concern

Actions builder = new Actions(driver);
builder.clickAndHold(curSourceElement);
builder.moveToElement(curTargetElement).Build().Perform();
sleepResponsibly(2000); //Give handler time to react. After working replace 
                        // sleep with wait on ExpectedConditions
builder.release(curTargetElement).build().perform(); 
driver.Manage().Window.Size = currentWinSize; // Put window size back

public void sleepResponsibly(int timeMillisecond){
    try{
        Thread.sleep(timeMillisecond);
    } catch (InterruptedException ex) {
        Thread.currentThread().interrupt(); 
        throw new RuntimeException(ex);
    }
}

顺便说一句,我使用Window.Maximize()运行我的所有测试,但是如果你不这样做,则包括该步骤。此外,如果悬停事件处理程序弹出打开一个新元素作为目标,则需要等待该新元素可单击,然后在该新目标上释放。只有你知道你的代码是如何设计的。