21 May 2024 Leave a comment Tech-Help
When automating tests on web pages using Selenium 2 and Python, you may encounter scenarios where you need to verify the presence of specific text on a web page. This guide will walk you through the most effective methods to achieve this.
Generic Solution
For a straightforward approach, you can use the page_source
attribute of the Selenium WebDriver. This method checks if the desired text is present in the HTML source of the web page.
if text in driver.page_source:
# text exists in page
This simple condition will verify if the text exists in the page source and can be a quick way to check for text presence.
Using Unittest
If you are using the unittest
framework, you can incorporate the following assertion:
from unittest import TestCase
class TestPageText(TestCase):
def test_text_presence(self):
self.assertTrue(text in driver.page_source)
This will assert that the text is present in the page source, providing a clear pass/fail result in your test suite.
Using Pytest
For those using pytest
, the assertion is quite similar:
def test_text_presence():
assert text in driver.page_source
This approach integrates seamlessly with pytest
, ensuring that your tests are simple and readable.
Using Regular Expressions
Another method involves using regular expressions to search for the text within the page source. This can be particularly useful if you need more flexibility in matching patterns:
import re
src = driver.page_source
text_found = re.search(r'text_to_search', src)
assert text_found is not None
This method provides a robust way to check for text presence, allowing for complex search patterns.
Waiting for Elements
In some cases, the text you are looking for might be part of an element that is dynamically loaded. You can use Selenium’s explicit wait functionality to wait for a specific condition:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get(url)
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'some link text')))
This method waits for up to 10 seconds for the element with the specified link text to become clickable, ensuring that the text is present and interactable.
Enhancing Your Test Automation with Repeato
While these methods provide effective ways to check for text presence using Selenium, managing and maintaining tests can become complex as your application grows. This is where Repeato, a no-code test automation tool for iOS and Android, can help.
With Repeato, you can create, run, and maintain automated tests for your apps quickly and efficiently. Repeato’s intuitive test recorder and computer vision-based approach make it particularly fast to edit and run tests. Additionally, Repeato supports testing websites inside an Android emulator or device, with explicit web testing support coming soon.
For more information on how Repeato can streamline your test automation process, visit our Getting Started guide.