3

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

ROMANIA_engineer
  • 54,432
  • 29
  • 203
  • 199
Bhavik Tikudiya
  • 103
  • 1
  • 7

0 Answers0