Python + Selenium ActionChain drag_and_drop не работает на Chorme + MacOS

Я пытался использовать селен, чтобы обойти проверку блока ползунка на веб-сайте (не взлом, это мой веб-сайт, не беспокойтесь)

но почему-то функция drag_and_drop не может подобрать блок, который я выбрал.

HTML блока:

<div class = "h-slider-block" style = "margin-left: 0px;"></div>

и когда блок перетаскивается в крайнее правое положение, это будет:

<div class = "h-slider-block" style = "margin-left: 394px;"></div>

и код, который я использовал для его перетаскивания:

knob = browser.find_element_by_class_name('h-slider-block')
# ActionChains(browser).drag_and_drop_by_offset(knob, offset, 0).perform()
ActionChains(browser).click_and_hold(knob).move_by_offset(offset, 0).pause(0.5).release().perform()

offset установлен на 394.

код работает нормально, но, как я наблюдаю в браузере, никаких действий не предпринимается. Я пробовал обе комбинации выше, но ни одна из них не работает. Есть идеи?

Обновлять:

Версия браузера Chrome: 72.0.3626.121 (официальная сборка) (64-разрядная версия)

Версия ChromeDriver: 2.46

macOS Мохаве 10.14.3

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
207
1

Ответы 1

Мне любопытно, почему вы используете driver здесь

knob = driver.find_element_by_class_name('h-slider-block')

и browser здесь.

ActionChains(browser).click_and_hold(knob).move_by_offset(offset, 0).pause(0.5).release().perform()

Я не знаю, как определяются ваши browser и/или driver, но есть ли разница, если вы просто замените browser на driver в своих цепочках действий?

ActionChains(driver).click_and_hold(knob).move_by_offset(offset, 0).pause(0.5).release().perform()

о, дерьмо, это была опечатка. driver должно быть browser и нет не работает

Travis Su 12.03.2019 00:32

Вы имеете в виду, что до сих пор нет ошибок и никаких действий не предпринимается?

C. Peck 12.03.2019 00:34

Я ненавижу ActionChains, они никогда не делают то, что должны. Насколько я вижу, ваш код должен работать. Извините, больше ничем не могу помочь, может быть, я вернусь к этому завтра

C. Peck 12.03.2019 02:48

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