Родные функции веб-драйвера Selenium работают, но те же функции класса ActionChains не работают с одним и тем же элементом - PullRequest
0 голосов
/ 11 июня 2018

При попытке автоматизировать использование 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()

Есть предложения?

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