Подтвердить что ты не робот

Есть ли способ выполнить наведение мыши (наведите указатель мыши на элемент), используя привязки Selenium и Python?

Читая здесь, по-видимому, раньше был класс RenderedWebElement с методом hover. Это, однако, было сделано исключительно для Java (я искал документацию по привязкам Python безрезультатно) и с тех пор устарело для Java.

hover не могут быть выполнены с использованием action_chains, ни с помощью WebElement объекта либо.

Есть идеи, как это сделать для Python? Я был здесь, но он использует RenderedWebElement и, следовательно, не слишком помогает.

Я использую: Python 2.7, Windows Vista, Selenium 2, Python Bindings

РЕДАКТИРОВАТЬ: Существует метод mouse_over для объекта selenium.selenium.selenium но я не могу найти способ создать экземпляр без уже работающего автономного сервера.

РЕДАКТИРОВАТЬ Пожалуйста, просмотрите комментарии ответа помечены как ответ только в случае, если у вас есть неправильные представления, как я!

4b9b3361

Ответ 1

Чтобы сделать зависание, вам нужно использовать метод move_to_element.

Вот пример

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

firefox = webdriver.Firefox()
firefox.get('http://foo.bar')
element_to_hover_over = firefox.find_element_by_id("baz")

hover = ActionChains(firefox).move_to_element(element_to_hover_over)
hover.perform()

Ответ 2

@AutomatedTester предоставил сообществу отличное решение!

Ниже как я это использовал.

Я использовал сигнал для правильного выхода из phantomJS, поскольку он иногда зависает в текущем процессе.

Я предпочитаю использовать find_element_by_xpath, поскольку xpath легко найти в chrome.

Вот как: щелкните правой кнопкой мыши → осмотрите → щелкните правой кнопкой мыши → Копировать → CopyXpath

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import signal

browser = webdriver.PhantomJS()
browser.implicitly_wait(3)

def hover(browser, xpath):
    element_to_hover_over = browser.find_element_by_xpath(xpath)
    hover = ActionChains(browser).move_to_element(element_to_hover_over)
    hover.perform()



browser.service.process.send_signal(signal.SIGTERM)  # kill the specific phantomjs child proc
browser.quit()