При попытке автоматизировать использование Selenium webdriver и python я сталкиваюсь со следующей проблемой:
Простой щелчок работает без класса цепочек действий:
element.click()
Нопопытка щелкнуть не работает с использованием класса цепочек действий:
from selenium.webdriver.common.action_chains import ActionChains
action = ActionChains(driver)
action.click(element).perform()
Аналогично, попытка перетаскивания не работает с использованием класса цепочек действий:
action.drag_and_drop_by_offset(element,0,100).perform()
action.drag_and_drop(element,element2).perform()
Использование ActionChains дает исключение устаревшего элемента.
Есть ли другой способ выполнить эти операции, такие как move_to, mouse_press, mouse_release, drag_drop и т. Д. без класса ActionChains
Далее - работа напрямую с командами driver
:
from selenium.webdriver.remote.command import Command
driver.execute(Command.CLICK_ELEMENT, {"id":getattr(element,"id")})
Но это не так:
from selenium.webdriver.remote.command import Command
driver.execute(Command.MOVE_TO, {"id":getattr(element,"id")})
driver.execute(Command.MOUSE_DOWN, {})
driver.execute(Command.MOVE_TO, {"id":getattr(element2,"id")})
driver.execute(Command.MOUSE_UP, {})
Также заметил, что jquery для получения позиции объекта возвращает неопределенное значение, даже если объект присутствует:
$($x('div[draggable="true" and @class="result selected-row"][1]')).position()
Есть предложения?