Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Перестал работать dragAndDropBy в Selenium

selenium
java
Теги: #<Tag:0x00007f7b70ae0978> #<Tag:0x00007f7b70ae07c0>

#1

Добрый день всем
Заранее спасибо . Ситуация такая 2 месяца назад тест работал нормально и вдруг перестал , раньше он запускался ежедневно. вот кусок

 WebElement colorPiker = driver.findElement(By.xpath(".//div[starts-with(@id, 'advancedcolorpicker-')]/div[1]/span[1]//span[1]/div"));
    Actions act0 = new Actions(driver);
//словили указатель
 act0.clickAndHold(colorPiker).perform();
//переместили икс и игрек задаем в отдельных методах
 act0.dragAndDropBy(colorPiker, x, y - y / 10).perform();
//кликнули 
 act0.click().perform();
//отпустили 
  act0.release().perform();

вылетает ексепшен

org.openqa.selenium.WebDriverException: UnknownError: Cannot press more then one button or an already pressed button.'UnknownError: Cannot press more then one button or an already pressed button.' when calling method: [wdIMouse::down]

заменил на

 act0.clickAndHold(colorPiker).moveToElement(colorPiker, x, y - y / 10).release().build().perform();

вопрос почему так получается ?? теги не поменялись да и работа этого модуля кажется не менялась
http://prntscr.com/8pdryc - собственно вот мой тест двигал


(Stan) #2

clickAndHold нажимает на элемент и не отпускает, далее вы опять нажимаете не отпуская левую кнопку с помощью dragAndDropBy. Вопрос - сможете ли вы в реальной жизни совершить руками dragAndDrop, если левая кнопка мышки уже нажата, не отпуская ее? :slight_smile:


#3

а как раньше работало ?


#4

Хороший вопрос :smiley:


(Stan) #5

Сложный вопрос, слишком много составляющих - может была бага в какой-то версии селениума (менялась ли версия?) и он не обрабатывал такого рода события или еще 100500 ситуаций. Можно попробовать призвать @barancev в эту тему, может быть он в курсе :slight_smile:


#6

ок как подскажите лучше сделать ?


(Stan) #7

http://docs.seleniumhq.org/docs/03_webdriver.jsp#drag-and-drop


#8

а если таргет у меня смещение на 20 пикселей влево
??


(Stan) #9

Элемент который берете и куда кладете один и тот же? уверены?


(barancev) #10

Да, нельзя второй раз кликнуть мышкой, если клавиша уже зажата предыдущей командой.
Если был такой баг – хорошо, что мы его исправили :smile:


(vmaximv) #11

С одной стороны хорошо, с другой то, что perform() релизит все модификаторы крепко сидит в голове и коде.