user1511808
user1511808

Reputation: 65

How to select an element from a menu using Webdriver Selenium ? The Menu drop down shows up on Mouse Over?

How to select an element from a menu using Webdriver Selenium ? The Menu drop down shows up on Mouse Over?

Upvotes: 6

Views: 45270

Answers (4)

Danny
Danny

Reputation: 287

WebElement mnuElement;
WebElement submnuElement;
mnuElement = driver.findElement(By.cssSelector("insert selector here"));
submnuElement = driver.findElement(By.cssSelector("insert selector here"));

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.moveToElement(mnuElement).perform();
// Pause 2 Seconds for submenu to be displayed
TimeUnit.SECONDS.sleep(2); //Pause 2 seconds
// Clicking on the Hidden submnuElement
submnuElement.click();  

Upvotes: 0

djangofan
djangofan

Reputation: 29689

Here is how I click a invisible anchor link on a tag: a link that is generated dynamically by Javascript:

public static void mouseClickByLocator( String cssLocator ) {
     String locator = cssLocator;
     WebElement el = driver.findElement( By.cssSelector( locator ) );
     Actions builder = new Actions(driver);
     builder.moveToElement( el ).click( el );
     builder.perform();
}

Upvotes: 0

eugene.polschikov
eugene.polschikov

Reputation: 7339

You can check it in two ways: 1) first way is to use actions builder

WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).Click();
sbEle = driver.findElement(By.Id("sbEle")).Click();

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.MoveToElement(mnEle).Perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).Click();

See here

2) another approach is to click directly needed element using jscript without simulating mouse hover event:

String cssLocatorOfTheElement=....//locator of the element to click on    
JavascriptExecutor js = (JavascriptExecutor) driver;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("var x = $(\'"+cssLocatorOfTheElement+"\');");
            stringBuilder.append("x.click();");
            js.executeScript(stringBuilder.toString());

hope this works for you)

Upvotes: 7

Frigik
Frigik

Reputation: 449

Simulate mouseOver event and then select element you can like that:

var elementToShowMenu = Driver.FindElement(Byl.Id("some id")); 
new Actions(Driver).MoveToElement(elementToShowMenu).Release(elementToShowMenu).Build().Perform();
var menuElement = Driver.FindElement(Byl.Id("your menu id"));

Upvotes: 0

Related Questions