Using selenium-rc and the java client, I want to test a menu which opens when the user moves the mouse over it. It closes when the mouse leaves the menu. This is done using :hover
css, without any javascript.
In selenium, there are many methods for mouse actions, but none of them seems to trigger any css :hover
style to be used.
Google shows that I am not alone with this problem, but there has not be a solution. Some folks comment that you had to add some javascript code; however, in selenium rc, I don't think that I even have a proper place for user-contributed additional javascript code.
My wish would be the following code to work, given that a div#navi_settings contained the menu which contains the - normally invisible - a element:
selenium.mouseHover("css=div#navi_settings");
assertTrue(selenium.isVisible("//a[contains(text(), 'Text on link')]"));
Unfortunately, the method moveHover()
does not yet exist.
I couldn't find a way to do this using the Selenium interface. However, since I am using Selenium 2, I can use the WebDriver API, as per http://groups.google.com/group/selenium-developers/msg/8210537dde07155f?pli=1
In your case, something like this may work, if you can upgrade to Selenium 2:
WebDriver webDriver;
...
((RenderedWebElement) webDriver.findElement(By.cssSelector("div#navi_settings"))).hover();