Java – WebDriver unable to locate element (link/Java)

htmljavaseleniumwebdriver

I'm using Selenium to navigate a webpage which has a link called "Mail", using WebDriver (just recently switched from RC to WebDriver). I want to click on the link but the testcase always fails with the error:

org.openqa.selenium.NoSuchElementException: Unable to locate element:
{"method":"link text","selector":"Mail"}

When inspecting the element with Firebug I get the following HTML:

<a href="url/New-Doc" target="_top" fahidden="false" faswid="e-switcher-mail" faprop="p-e-switcher-function-id">Mail</a>

This is the Java which attempts to click the link:

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.linkText("Mail"));    
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

I can see that the element is present on screen but still, the test case fails.

Does anyone know what I might be missing here or an alternative way to find the link element?

Best Answer

Try via XPath. Example:

driver.findElement(By.xPath("/a[text()='Mail']"));

Would also be worthwhile double checking to ensure there are no iframes on the page.