ОК, поэтому я попробовал все, в основном, с решением Javascript. Попытка simulateDragDrop с селектором элемента или идентификатора, попытка simulateDragDrop с JQuery, попытка executeAsyn c для JQuery и ничего не произошло. Пробовал это даже для другого случая перетаскивания, и он не работал.
Ближайшим решением было перетаскивание JS, которое перетаскивает элемент, но оно не будет отбрасывать, что: https://ynot408.wordpress.com/2011/09/22/drag-and-drop-using-selenium-webdriver/
driver.execute_script(js + "simulate(arguments[0],'mousedown',0,0);",alink_from)
driver.execute_script(js + "simulate(arguments[0],'mousemove',arguments[1],arguments[2]);",alink_from,xto,yto)
driver.execute_script(js + "simulate(arguments[0],'mouseup',arguments[1],arguments[2]);",alink_from,xto,yto)
Наконец-то через пару часов я принял решение с использованием библиотеки PyAuto GUI! Но для этого нужно получить разные координаты, потому что PyAuto GUI использует координаты окна, а Selenium - координаты браузера. Проблема в том, что вам нужно сосредоточиться на целевом элементе, который будет перетаскиваться в цель, но для этого нужно будет навести курсор мыши на цель вверх и затем щелкнуть вверх до цели.
Также эта библиотека потребует установки (в Ubuntu например):
sudo apt-get install python3-tk
pip3 install pyautogui
Вот код:
import time
import pyautogui
height=driver.get_window_size()['height']
browser_navigation_panel_height = driver.execute_script('return window.outerHeight - window.innerHeight;')
xf = alink_from.location['x']
yf = alink_from.location['y']
act_y_from = yf%height
scroll_Y_from= yf/height
try:
driver.execute_script("window.scrollTo(0, "+str(scroll_Y_from*height)+")")
except Exception as err:
print("Exception")
pyautogui.moveTo(xf,act_y_from+browser_navigation_panel_height)
xto = anotation_body.location['x']
yto = anotation_body.location['y']
act_y_to = yto%height
scroll_Y_to = yto/height
pyautogui.dragTo(xto+1,act_y_to+browser_navigation_panel_height)
time.sleep(2)
pyautogui.mouseUp()
time.sleep(2)
pyautogui.click()