I saw similar issues just a few times, but it works properly in most of the cases.... I'm doing something like this
WaitForElement(By.XPath("locator"));
webElement = FindElement(By.XPath("locator"));
new Actions(webDriver).MoveToElement(webElement).Perform();
The only issue that I have is with nested menus where I need to hover at least 2 elements for example
MainMenu
SubMenu1
Submenu2 ----- >
------->NestedSubmenu2-1
------->NestedSubmenu2-2 I need to click this element, but for some reason when I tried to click this, it will select the element inside the Submenu3
------->NestedSubmenu2-3
Submenu3
------->NestedSubmenu3-1
It works fine on IE, but I having that problem in FF, the only workaround that I found was to execute 2 times the selection, I tried with css, xpath and linktext
WaitForElement(By.LinkText("MainMenu"));
webElement = FindElement(By.LinkText("MainMenu"));
new Actions(webDriver).MoveToElement(webElement).Perform();
WaitForElement(By.LinkText("Submenu2"));
webElement = FindElement(By.LinkText("Submenu2"));
new Actions(webDriver).MoveToElement(webElement).Perform();
WaitForElement(By.LinkText("NestedSubmenu2-2"));
Click(By.LinkText("NestedSubmenu2-2")); For some reason it is selecting the NestedSubmenu3-2 the first time
//***************************************************************
//WORKAROUND, Select the Element again and works fine
////***************************************************************
WaitForElement(By.LinkText("MainMenu"));
webElement = FindElement(By.LinkText("MainMenu"));
new Actions(webDriver).MoveToElement(webElement).Perform();
WaitForElement(By.LinkText("Submenu2"));
webElement = FindElement(By.LinkText("Submenu2"));
new Actions(webDriver).MoveToElement(webElement).Perform();
WaitForElement(By.LinkText("NestedSubmenu2-2"));
Click(By.LinkText("NestedSubmenu2-2"));