我正在尝试在selenium中实现拖放。这是我想出的一个新方案,在我将源拖动到放置位置并保持它之前,放置位置是不可见的。它看起来像这样:
我尝试了几件事,比如
情景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();
以及许多其他方式,通过移动到删除位置并添加等待,但它们似乎都没有工作。
当放置位置不可见时,是否还有其他方法可以执行拖放操作。
任何帮助都会非常感激。
感谢。
答案 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()运行我的所有测试,但是如果你不这样做,则包括该步骤。此外,如果悬停事件处理程序弹出打开一个新元素作为目标,则需要等待该新元素可单击,然后在该新目标上释放。只有你知道你的代码是如何设计的。