2017-02-14 78 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所有測試(),但包含在情況下,你不要了一步。另外,如果懸停事件處理程序彈出打開一個新元素作爲目標,您需要等待該新元素可點擊,然後釋放該新目標。只有你知道你的代碼是如何設計的。