Перейти к содержимому

Аудит и оптимизация QA-процессов
онлайн, начало 24 декабря
Автоматизация функционального тестирования
онлайн, начало 27 ноября
Логи как инструмент тестировщика
онлайн, начало 30 ноября
Тестирование REST API
онлайн, начало 30 ноября
Фотография

Не получается перетащить элемент Selenium + Python

selenium python ActionChains

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 arkuz

arkuz

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Артём


Отправлено 31 января 2020 - 17:58

Приветствую. 
У меня в GUI есть возможность перетащить элемент мышкой. Пробую 2 варианта, но ни один не работает. Элемент захватывается, но не передвигается. Подскажите, пожалуйста, что-то не так делаю или другой способ. Переменной height пробовал присваивать разные значения.
Ошибок при этом нет. Тест висит до тех пор, пока я не переведу курсор в браузер запущенный селениумом. После этого элемент отпускается и продолжает выполнение следующая инструкция.

    def hold_and_move_section_to_down(self, element):
        height = element.size['height']
        ActionChains(self.driver).click_and_hold(element).move_by_offset(0, height).release().perform()
        '''
        # или так
        ActionChains(self.driver).drag_and_drop_by_offset(element, 0, height).perform()
        '''

Прикрепленные файлы

  • Прикрепленный файл  image.png   10,07К   0 Количество загрузок:

  • 0

#2 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 31 января 2020 - 20:03

просто напишите компонентный тест, вот и все


  • 0

#3 arkuz

arkuz

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Артём


Отправлено 01 февраля 2020 - 10:17

просто напишите компонентный тест, вот и все

 

Можно подробнее? Что вы имеете ввиду?


  • 0

#4 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 02 февраля 2020 - 21:14

юнит тест для компонента, который тестируете


  • 0

#5 arkuz

arkuz

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Артём


Отправлено 03 февраля 2020 - 08:05

юнит тест для компонента, который тестируете

 

Мне нужно написать автотест перетаскивания элемента. Писать юнит тест компонента это наверное дело фронтендера.
Есть какие-то решения или предложения как мне можно побороть эту проблему?


  • 0

#6 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 03 февраля 2020 - 09:13

 

 

Мне нужно написать автотест перетаскивания элемента. 

такого не бывает

 

если Вы действительно пишете автотесты, то фронтендер должен написать этот юнит тест

а если Вы пишете парсер вебсайтов, то в таком случае делайте запрос через РЕСТ АПИ

 

в обоих случаях нет никакой надобности для перетаскиваний


  • 0

#7 arkuz

arkuz

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Артём


Отправлено 03 февраля 2020 - 14:06

 

 

 

Мне нужно написать автотест перетаскивания элемента. 

такого не бывает

 

если Вы действительно пишете автотесты, то фронтендер должен написать этот юнит тест

а если Вы пишете парсер вебсайтов, то в таком случае делайте запрос через РЕСТ АПИ

 

в обоих случаях нет никакой надобности для перетаскиваний

 

У меня есть функционал перетаскивания секций в браузере. Т.е. можно менять позицию секции относительно других секций. Делается это мышкой в браузере - drag and drop. Я пишу end-to-end тест с использованием Selenium. Т.е. существует кейс "Перетащить секцию", вот его я и хочу выполнить с использованием библиотеки Selenium, так как бы это делал пользователь из браузера.
И у меня возникают описанные проблемы. Ищу вариант решения.

Вы что-то можете подсказать по исправлению моего решения или предложить альтернативное решение? Как выполнить перетаскивание элемента в браузере средствами Selenium?


  • 0

#8 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 03 февраля 2020 - 14:14

 

 

У меня есть функционал перетаскивания секций в браузере. Т.е. можно менять позицию секции относительно других секций. Делается это мышкой в браузере - drag and drop. Я пишу end-to-end тест с использованием Selenium. Т.е. существует кейс "Перетащить секцию", вот его я и хочу выполнить с использованием библиотеки Selenium, так как бы это делал пользователь из браузера.
И у меня возникают описанные проблемы. Ищу вариант решения.

Вы что-то можете подсказать по исправлению моего решения или предложить альтернативное решение? Как выполнить перетаскивание элемента в браузере средствами Selenium?

очень похоже на:

"у меня есть гвоздь. И у меня есть микроскоп. Вот этот вот гвоздь я и хочу забить этим микроскопом"


  • 0

#9 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 236 сообщений
  • ФИО:Алексей

Отправлено 04 февраля 2020 - 10:48

 

 

 

У меня есть функционал перетаскивания секций в браузере. Т.е. можно менять позицию секции относительно других секций. Делается это мышкой в браузере - drag and drop. Я пишу end-to-end тест с использованием Selenium. Т.е. существует кейс "Перетащить секцию", вот его я и хочу выполнить с использованием библиотеки Selenium, так как бы это делал пользователь из браузера.
И у меня возникают описанные проблемы. Ищу вариант решения.

Вы что-то можете подсказать по исправлению моего решения или предложить альтернативное решение? Как выполнить перетаскивание элемента в браузере средствами Selenium?

очень похоже на:

"у меня есть гвоздь. И у меня есть микроскоп. Вот этот вот гвоздь я и хочу забить этим микроскопом"

 

не понимаю, чего так набросились. Вероятно, в рамках End-to-end теста есть задача перетащить секцию и далее проверить как это действие применилось в функционале.

 

По теме вопроса:

1. Перетаскиваете не с той позиции (element = от центра элемента, что не всегда соответствует точке, за которую можно тянуть)

2. обычно у нас action chains выглядит так: clickAndHold(element).moveTo(element).moveByOffSet(0,0).moveByOffset(offsetX, offsetY).release(). Без вот этого "moveTo(element).moveByOffSet(0,0)" тоже были проблемы, насколько помню


  • 0

#10 arkuz

arkuz

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Артём


Отправлено 04 февраля 2020 - 13:37

1. Перетаскиваете не с той позиции (element = от центра элемента, что не всегда соответствует точке, за которую можно тянуть)

При выполнении видно изменение секции, которое происходит именно при холде и начале движения, но дальше ничего не происходит.

 

2. обычно у нас action chains выглядит так: clickAndHold(element).moveTo(element).moveByOffSet(0,0).moveByOffset(offsetX, offsetY).release(). Без вот этого "moveTo(element).moveByOffSet(0,0)" тоже были проблемы, насколько помню

Спасибо, но данный способ тоже не помог, такое же поведение.

Я находил варианты как эмулировать драг-энд-дроп с помощью JS и jQuery. Эти способы признаны рабочими на форуме, но у меня не работают. В Chrome и Firefox поведение одинаковое. Мне кажется, что есть какая-то особенность на фронте.

Кстати есть проблема у Selenium с драг-энд-дроп в HTML5 и вроде как данная ишью открыта до сих пор с 2016 года.


  • 0

#11 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 139 сообщений
  • ФИО:кузьмин сергей

Отправлено 17 февраля 2020 - 18:43

@arkuz опубликуйте урл сайта на котором нужно осуществить DND тест /

есть снипеты js  которые такое делают -  успех не гарантирован насколько мне известно но рабочие примеры есть. хотел проверить работает  или нет с вашим прежде чем  постить пример. иначе думаю вопрос можно закрывать


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами selenium, python, ActionChains

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале