Проблема похожа на описанную здесь .
Я хочу перевести мышь из точки a в точку b вдоль кривой, которую я определяю. Итак, мне нужны координаты местоположения a и b. Точка a - это текущее местоположение мыши, а точка b - это элемент, который я могу найти. Я могу найти позицию элемента, используя следующее:
element = driver.find_element_by_class_name("insertnamehere")
x, y = element.location["x"], element.location["y"]
К сожалению, я не могу использовать похожие методы Selenium, чтобы найти текущее местоположение мыши (насколько я знаю). Поэтому я должен найти мышку вот так:
import pyautogui
x_mouse, y_mouse = pyautogui.position()
Pyautogui указывает местоположение на экране, которое, как описано выше, связано не с element.location. Но связанное решение не работает для меня на интересующем меня сайте. То есть я не получаю совпадающие координаты. Сайт этот .
Я подозреваю, что это потому, что локатор Selenium не считает элемент карты как часть веб-страницы и возвращает координаты относительно списков (часть, которую вы можете прокрутить). Итак, вот несколько идей, которые я попробовал:
- Преобразование местоположения экрана в местоположение Селена или наоборот.
Это сложно, потому что я думаю, что формула (экран для Selenium) будет зависеть от моего монитора, поэтому не будет работать вообще.
- Поместите мышь на веб-элемент так, чтобы точка a могла быть найдена с помощью .location Selenium.
Возможно, это лучшее решение, но мне нужно было бы перейти к элементу с помощью ActionChains (driver) .move_to_element (), что лишает цели определения пути мыши a -> b.
- Либо найдите местоположение мыши, используя метод определения местоположения Selenium, либо найдите элемент в терминах экранных координат.
Я пробовал метод locateOnScreen () pyautogui. Кажется многообещающим, и я, вероятно, просто сделаю это таким образом.