2017-02-14 46 views
1

我想实现在硒中的拖放。这是我提出的一个新场景,拖放位置不可见,除非我拖放源放置位置并按住它。它看起来是这样的: 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(); 

,并通过移动到了很多其他的方法放置位置,并通过添加等待,但他们似乎没有工作。

当放置位置不可见时,是否有其他方式进行拖放操作?

任何帮助将非常感激。

谢谢。

回答

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); 
    } 
} 

BTW,我跑我的Window.Maximize所有测试(),但包含在情况下,你不要了一步。另外,如果悬停事件处理程序弹出打开一个新元素作为目标,您需要等待该新元素可点击,然后释放该新目标。只有你知道你的代码是如何设计的。