We use link text to find a clickable link on a webpage by its visible text. This helps us interact with links easily during testing.
You want to click a link that has a unique visible text.
You need to verify if a specific link is present on the page.
You want to check the behavior after clicking a link with known text.
You want to automate navigation by clicking links with exact text.
Syntax
Selenium Python
element = driver.find_element(By.LINK_TEXT, "link text here")
Use the exact visible text of the link inside the quotes.
Make sure to import By from selenium.webdriver.common.by.
Examples
Finds the link with visible text 'Home'.
Selenium Python
element = driver.find_element(By.LINK_TEXT, "Home")
Finds the link with visible text 'Contact Us'.
Selenium Python
element = driver.find_element(By.LINK_TEXT, "Contact Us")
Sample Program
This script opens a webpage with links, finds a link by its visible text 'HTML Links', prints its URL, clicks it, waits for the page to load, then prints the new URL.
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time
# Setup Chrome driver options
options = Options()
options.add_argument('--headless') # Run browser in headless mode# Setup Chrome driver service (adjust path to chromedriver if needed)
service = Service()
driver = webdriver.Chrome(service=service, options=options)
try:
# Open example page with links
driver.get('https://www.w3schools.com/html/html_links.asp')
# Find link by exact visible text
link = driver.find_element(By.LINK_TEXT, 'HTML Links')
# Print the href attribute of the linkprint(link.get_attribute('href'))
# Click the link
link.click()
# Wait a moment for page to load
time.sleep(2)
# Print current URL after clickprint(driver.current_url)
finally:
driver.quit()
OutputSuccess
Important Notes
Link text must match exactly, including spaces and case.
If multiple links have the same text, only the first is found.
Use By.PARTIAL_LINK_TEXT if you want to match part of the link text.
Summary
Find element by link text locates links using their visible text.
It is simple and useful for clicking or verifying links.
Exact text match is required for this method.
Practice
(1/5)
1. What does the Selenium method find_element_by_link_text do?
easy
A. It finds elements by their CSS class name.
B. It finds any element by its HTML tag name.
C. It finds a link on the page by its exact visible text.
D. It finds elements by their XPath expression.
Solution
Step 1: Understand the method purpose
find_element_by_link_text specifically searches for anchor (<a>) elements by their visible text on the page.
Step 2: Compare with other locator types
Other methods like finding by tag name, class name, or XPath do not focus on link text but on different attributes or structures.
Final Answer:
It finds a link on the page by its exact visible text. -> Option C
Quick Check:
find_element_by_link_text = exact link text match [OK]
Hint: Link text locator matches exact visible text only [OK]
Common Mistakes:
Confusing link text with partial text
Using it to find non-link elements
Assuming it matches partial text automatically
2. Which of the following is the correct syntax to find a link with text "Home" using Selenium in Python?
easy
A. driver.find_element_link_text("Home")
B. driver.find_element_by_link("Home")
C. driver.find_element_by_text_link("Home")
D. driver.find_element_by_link_text("Home")
Solution
Step 1: Recall Selenium method naming
The correct method to find a link by its exact text is find_element_by_link_text.
Step 2: Check method call syntax
The method is called on the driver object with the link text as a string argument, e.g., driver.find_element_by_link_text("Home").
Final Answer:
driver.find_element_by_link_text("Home") -> Option D
Quick Check:
Correct method name and syntax = driver.find_element_by_link_text("Home") [OK]
Hint: Remember full method name: find_element_by_link_text [OK]
Common Mistakes:
Using incomplete or incorrect method names
Missing parentheses or quotes
Confusing with other locator methods
3. What will be the output of the following code snippet if the page contains a link with text exactly "Contact Us"?
element = driver.find_element_by_link_text("Contact Us")
print(element.tag_name)
medium
A. a
B. div
C. span
D. NoSuchElementException
Solution
Step 1: Understand what find_element_by_link_text returns
This method returns the anchor (<a>) element whose visible text matches exactly "Contact Us".
Step 2: Check the tag name of a link element
Links in HTML are represented by the <a> tag, so element.tag_name will be "a".
Final Answer:
a -> Option A
Quick Check:
Link tag name = "a" [OK]
Hint: Link elements always have tag name 'a' [OK]
Common Mistakes:
Assuming tag name is 'div' or 'span'
Expecting text output instead of tag name
Not handling exceptions if link missing
4. Given the code below, what is the error and how to fix it?
element = driver.find_element_by_link_text('About')
print(element.text)
Assume the link text on the page is "About Us".
medium
A. SyntaxError due to missing parentheses; fix by adding parentheses.
B. NoSuchElementException because link text does not match exactly; fix by using full text "About Us".
C. AttributeError because element has no text attribute; fix by using element.get_text().
D. No error; code works fine.
Solution
Step 1: Check link text matching requirement
The method find_element_by_link_text requires exact visible text match. "About" does not match "About Us" exactly.
Step 2: Identify the error and fix
Because of mismatch, Selenium raises NoSuchElementException. Fix is to use the exact link text: 'About Us'.
Final Answer:
NoSuchElementException because link text does not match exactly; fix by using full text "About Us". -> Option B
Quick Check:
Exact text match needed = NoSuchElementException because link text does not match exactly; fix by using full text "About Us". [OK]
Hint: Link text must match exactly, no partial matches [OK]
Common Mistakes:
Using partial link text with find_element_by_link_text
Confusing element.text with get_text()
Ignoring exception when element not found
5. You want to click a link that has the visible text "Learn More" but sometimes the link text changes to "Learn More About Us". How can you reliably find and click this link using Selenium in Python?
hard
A. Use find_element_by_partial_link_text("Learn More") to match both variations.
B. Use find_element_by_link_text("Learn More") only and ignore other cases.
C. Use find_element_by_id("learnMoreLink") assuming the link has an id.
D. Use find_element_by_tag_name("a") and click the first link.
Solution
Step 1: Understand the problem with exact link text
Since the link text changes between "Learn More" and "Learn More About Us", exact match with find_element_by_link_text will fail for one variation.
Step 2: Use partial link text locator
find_element_by_partial_link_text("Learn More") matches any link containing "Learn More", covering both cases reliably.
Step 3: Consider other options
Using id requires knowing the id attribute, which may not exist. Clicking the first <a> tag is unreliable and may click wrong link.
Final Answer:
Use find_element_by_partial_link_text("Learn More") to match both variations. -> Option A
Quick Check:
Partial link text matches multiple variations [OK]
Hint: Partial link text finds links with text containing given string [OK]
Common Mistakes:
Using exact link text when text varies
Assuming link has id without checking
Clicking first link without filtering
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.