pythonseleniumselenium-webdriverpython-bindings

Is there a way to perform a mouseover (hover over an element) using Selenium and Python bindings?


Reading here, there apparently used to be a RenderedWebElement class with a hover method. It, however, was exclusively made for Java (I have searched the Python bindings documentation to no avail) and has since been deprecated for Java.

A hover can't be performed using action_chains nor by using a WebElement object either.

Any ideas as to how to do this for Python? I have been here but it uses RenderedWebElement and hence doesn't help too much.

I am using: Python 2.7, Windows Vista, Selenium 2, Python Bindings

EDIT: There is a method mouse_over for a selenium.selenium.selenium object but I cannot figure a way to create an instance without having the stand-alone server running already.

EDIT Please go through the comments of the reply marked as answer just in-case you have misconceptions like I did !


Solution

  • To do a hover you need to use the move_to_element method.

    Here is an example

    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()