2013-12-12 3 views
2

Я использовал приведенный ниже код для перетаскивания. Он работал в Firefoxdriver, но не в хромографе.Selenium Webdriver drag and drop НЕ работает в Chrome

WebElement dragElement = driver.findElement(By.id(dragid1)); 
WebElement dropElement = driver.findElement(By.id(dropid1));  

Actions builder = new Actions(driver); 
Action drag = builder.clickAndHold(dragElement).build(); 
drag.perform(); 

Action move = builder.moveByOffset(355, -20).build(); 
move.perform(); 
TimeUnit.SECONDS.sleep(2); 
Actions release = builder.clickAndHold(dropElement).release(); 
release.perform(); 

Пожалуйста, помогите!

+0

Какой элемент является то, что? Является ли это JQuery сортируемым? – Stas

ответ

0

Try пакетирование всего то индивидуальное Действия объектов в объекте а одиночные действия

Actions act = new Actions(driver); 
act.ClickAndHold(dragElement); 
act.MoveToElement(dropElement); 
act.Release(dragElement); 
act.Build().Perform(); 

Примечание: Для меня, в Chrome & IE, иногда просто перетащив элемент, не было достаточно, чтобы сделать его придерживаться там, и мне пришлось бы добавить дополнительный act.MoveByOffset(0, 5);, прежде чем выпустить для перемещения всего несколько пикселей, что, кажется, работает

Есть ли причина, по которой вам нужно подождать 2 секунды до выпуска или это то, что сработало в FF?

+0

Я попытался связать все отдельные действия с действием SINGLE. Все еще не сработало. Теперь он не работает даже в Firefox. Я поставил 2 секунды ожидания, пока я тестировал сценарий селена. Он работает даже без двух секунд ожидания. –

1

Вы оба источника и цели идентификаторы, то почему бы вам не попробовать использовать перетаскивание ..

I'am не хороший программист Java мой код в python..Hope может помочь иа бит

actionChains = ActionChains(driver) 
actionChains.drag_and_drop(dragElement, dropElement).perform() 
0

у меня была та же проблема, но надо переопределить это следующим образом:

 //Setup robot 
     Robot robot = new Robot(); 
     robot.setAutoDelay(50); 

     //Maximized browser: 
     robot.keyPress(KeyEvent.VK_F11); 
     Thread.sleep(2000); 
     WebElement dragElement = driver.findElement(drag_element); 
     Actions builder = new Actions(driver); 
     builder.dragAndDropBy(dragElement,0, 200).build().perform(); 
1

Пробовал ниже пример кода с chromedriver: 2,15, хром: V43 и работает нормально с Chrome.

Пример кода:

System.setProperty("webdriver.chrome.driver","drivers/chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.manage().timeouts().implicitlyWait(1,TimeUnit.MINUTES); 
    driver.get("http://jqueryui.com/droppable"); 

    driver.switchTo().frame(0); 
    WebElement dragElement = driver.findElement(By.id("draggable")); 
    WebElement dropElement = driver.findElement(By.id("droppable")); 
    Actions builder = new Actions(driver); 
    builder.clickAndHold(dragElement).moveToElement(dropElement).release().build().perform();