Перетаскивание драйвера Selenium + Chrome не работает должным образом

Я использую Selenium 3.14 и ChromeDriver 2.42 с Chrome 69.0. Я всегда использовал этот код для перетаскивания, который работал до недавнего времени, когда тесты начали давать сбой:

$driver->action()->clickAndHold()->moveByOffset(100, 0)->release()->perform();

После некоторого обновления Chrome он просто перестал перетаскивать. Я также попробовал функцию dragAndDropBy(), но безуспешно. (dragAndDrop() не вариант, потому что мне нужно перемещаться внутри одного элемента).

Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
0
0
284
1

Ответы 1

После нескольких часов экспериментов я смог сузить проблему до этой странной вещи, когда при использовании moveByOffset с большим числом, например 100 в моем примере, происходит сбой, он просто странным образом отскакивает на месте. Но когда я попытался переместить его только на пару пикселей, это сработало.

Это код, который у меня получился:

$driver->action()->clickAndHold()->perform();
for($i = 0; $i < 10; $i++){
      //moving this 10 times by 10 px instead of once by 100px
      $driver->action()->moveByOffset(10, 0)->perform(); 
}
sleep(1);
$driver->action()->release()->perform();

Я просто хочу поделиться этим, если кто-то столкнулся с подобной проблемой.

Другие вопросы по теме