Захват курсора при использовании drag_and_drop_by_offset (Python / Selenium) - PullRequest
2 голосов
/ 15 марта 2019

Мне нужно перетащить эту шкалу enter image description here, и когда я запускаю этот код:

HandScale = browser.find_element_by_xpath('//*[@data-xform="scale"]')
GridLineX = browser.find_element_by_class_name('outlined')
bottomLeft = browser.find_element_by_class_name('bottomLeft')
print GridLineX.size
action_chains = ActionChains(browser)
action_chains.drag_and_drop_by_offset(HandScale, 30, 30).click_and_hold(HandScale).perform()

Это все еще имеет захватывающий эффект, показанный здесь: enter image description here

Есть ли способ удалить этот эффект перед запуском другой части моего скрипта?

1 Ответ

1 голос
/ 15 марта 2019

Я думаю, вам просто нужна функция release() в action_chains, которая предназначена именно для этого. Строка для добавления в конец вашего текущего файла будет:

action_chains.release().perform()

Отредактируйте после обратной связи, что это не сработало: что делать, если вы сделаете release() внутри существующего action_chains, и просто добавьте pause() после вашего click_and_hold(HandScale), чтобы щелкнуть на самом деле проводится и не сразу выпущен. Наконец, поскольку вы используете аргумент webelement в click_and_hold(HandScale), я бы попытался освободить этот элемент с помощью release(HandScale). Итак, ваш action_chains может делать то, что вы хотите, если вы используете следующее:

 action_chains.drag_and_drop_by_offset(HandScale, 30, 30).click_and_hold(HandScale).pause(5).release(HandScale).perform()

Если ТО не работает, в API WebDriver есть метод, называемый reset_actions(), который, согласно документации, «очищает действия, которые уже сохранены локально и на удаленном конце». Я бы добавил это под ваш текущий action_chains, но вы можете попробовать вставить его до perform() в ваш текущий код. Строка для добавления будет выглядеть так:

action_chains.reset_actions().perform()

Если ничего из этого не работает для вас, вы можете попробовать

driver.execute_script("arguments[0].removeAttribute('cursor')", element")

Если вам нужно, я думаю, может помочь вам выяснить, что выполнять, если ничего из вышеперечисленного не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...