I want to mouse over an element in selenium webdriver for safari. I have tried following approaches to achieve the mouseover:
1) Using the Action class which is advance interaction API but its not supported by the Safari.
Actions builder = new Actions(webDriver);
builder.moveToElement(webDriver.findElement(By.xpath("my_locator_xpath"))).build().perform();
2) Using following JavaScript executor codes:
JavascriptExecutor js = (JavascriptExecutor) webDriver; js.executeScript("arguments[0].onmouseover()", my_element_locator);
String javaScript = "var evObj = document.createEvent('MouseEvents');" +"evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +"arguments[0].dispatchEvent(evObj);"; ((JavascriptExecutor)webDriver).executeScript(javaScript, dept_elem);
String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}"; JavascriptExecutor js = (JavascriptExecutor) driver; WebElement someElem = driver.findElement(By.id("some Id")); //replace with your own WebElement call/code here js.executeScript(mouseOverScript, someElem);
3) Using the Robot class.
Point elem_coords = my_web_element.getLocation();
Robot robot = new Robot();
robot.mouseMove(elem_coords.x, elem_coords.y);
All above mentioned methods are not able to achieve the mouseover. Code gets executed and I am not even getting any error.
Version configurations I am using are :
Mac OS- OS X 10.8
Safari- Version 6.0 (8536.25)
Selenium standalone jar- 2.45