Locating links
Selenium WebDriver provides multiple ways to locate links. You can locate a link either by its text or by partial text.
Locating links with partial text comes in handy when links have dynamic text. In this recipe, we will see how to use these methods to locate the links on page.
How to do it...
Let's create a sample test to see how locating links work in Selenium WebDriver with the following options.
Finding a link by its text
Selenium WebDriver's By
class provides the linkText()
method to locate links using the text displayed for the link. In the following example, we will locate the GMail link:
WebElement gmailLink = driver.findElement(By.linkText("GMail")); assertEquals("http://mail.google.com/", gmailLink.getAttribute("href"));
Finding a link by partial text
Selenium WebDriver's By
class also provides a method to locate links using partial text. This method is useful where developers create links with dynamic text. In this example, a link is provided to open inbox. This link also displays the number of new e-mails which may change dynamically. Here we can use the partialLinkText()
method to locate the link using a fixed or known portion of the link text, in this case it would be inbox.
WebElement inboxLink = driver.findElement(By.partialLinkText("Inbox")); System.out.println(inboxLink.getText());
How it works...
The linkText
and partialLinkText
locator methods query the driver for all the links that meet the specified text and returns the matching link(s).
There's more...
You can also locate links using id
, name
, or class
attributes if developers have provided these attributes.
Note
Locating elements based on text can cause issues while testing applications in multiple locales. Using parameterized text locator value could work in such applications.
See also
The Locating an element using the findElement method recipe
The Locating elements using findElements method recipe