Chapter{0}: Selenium Automation Testing: Why We Need It, How It Helps, and Its Architecture Explained

Automate This.
4 min readDec 7, 2024

--

Why Do We Use Selenium?

Testing websites manually can feel like being stuck in a loop — repeating the same actions over and over for every new browser or feature update. Selenium steps in as the ultimate automation superhero, saving you from this drudgery. It automates browser interactions, ensuring your websites work seamlessly across different browsers and platforms while saving time, reducing errors, and enhancing efficiency.

The Need for Selenium

In the fast-paced digital world, manual testing falls short because:

  1. It’s Slow: Repeating tests across browsers like Chrome, Firefox, Safari, and Edge is time-intensive.
  2. It’s Error-Prone: Human oversight is inevitable, especially in complex workflows.
  3. It’s Not Scalable: Testing hundreds of scenarios and features manually is nearly impossible.

Selenium eliminates these challenges by automating browser actions, making testing faster, more accurate, and scalable.

How Selenium Helps

Here’s why Selenium is a game-changer for testing:

1: Cross-Browser Compatibility

  • Selenium supports all major browsers:
  • Chrome
  • Firefox
  • Safari
  • Edge
    Example: A login test script written once in Selenium can be executed on Chrome, Firefox, and Edge, ensuring uniform functionality.

2: Language Flexibility

  • Selenium supports several programming languages:
  • Python:
from selenium import webdriver 
driver = webdriver.Chrome()
driver.get("https://example.com")
  • Java:
WebDriver driver = new ChromeDriver(); 
driver.get("https://example.com");
  • C#:
IWebDriver driver = new ChromeDriver(); 
driver.Navigate().GoToUrl("https://example.com");

Choose your preferred language to write tests without learning a new one.

1: Cost-Effective

  • Selenium is open-source and completely free.
    Example: You can start testing with just a browser driver like chromedriver.exe and your favorite programming language.

2: Seamless Integration

  • Selenium works effortlessly with:
  • CI/CD tools like Jenkins and GitHub Actions.
  • Test reporting frameworks like TestNG and ExtentReports.
  • Virtualization platforms like Docker for containerized testing.
    Example: Set up automated regression testing with Jenkins, saving hours of manual effort.

3: Parallel Testing with Selenium Grid

  • Selenium Grid allows tests to run on multiple browsers and machines simultaneously.
    Example: Instead of testing on Chrome and Firefox separately, execute both tests concurrently, cutting testing time in half.

Limitations of Selenium

While Selenium offers immense value, it has a few drawbacks:

1: Learning Curve

  • Writing effective test scripts requires coding knowledge.
    Example: To handle dynamic elements like pop-ups, testers must use Selenium commands like WebDriverWait.

2: No Built-In Reporting

  • Selenium doesn’t generate test reports.
    Example: You’ll need tools like ExtentReports or TestNG for detailed pass/fail summaries.

3: Flaky Tests

  • Tests can fail unpredictably if web elements load dynamically or change frequently.
    Example: Use techniques like explicit waits (WebDriverWait) to stabilize such tests.

4: Browser Driver Dependency

  • Each browser requires its specific driver:
  • chromedriver.exe for Chrome
  • geckodriver.exe for Firefox
  • msedgedriver.exe for Microsoft Edge
    Example: You need to download chromedriver.exe to automate testing on Chrome.

Selenium Architecture Explained

Selenium’s architecture ensures seamless communication between your test script and the browser. Here’s the breakdown:

1: Test Code (The Commander)

import org.openqa.selenium.By; // libraries 
import org.openqa.selenium.WebDriver; // libraries
import org.openqa.selenium.chrome.ChromeDriver; // libraries

public class SeleniumExample {
public static void main(String[] args) {
// Set the path for the ChromeDriver executable
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

// Create an instance of the ChromeDriver
WebDriver driver = new ChromeDriver();

// Open the URL
driver.get("https://example.com");

// Find the element with ID "login" and click on it
driver.findElement(By.id("login")).click();

// Close the browser
driver.quit();
}
}

Key Notes:

  1. Driver Path: Replace "path/to/chromedriver" with the actual path to the chromedriver executable on your machine.
  2. Browser Version: Ensure that your chromedriver version matches the version of Chrome installed on your system.
  3. Dependencies: Add the Selenium library to your project. If you're using Maven, include the following dependency in your pom.xml:
<dependency>     
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version> <!-- Use the latest version -->
</dependency>
  • Example: The script instructs the browser to open a website and click a login button.

2: Selenium WebDriver (The Translator)

  • WebDriver interprets your code into browser-compatible commands.
  • Example: In the script above, WebDriver sends a command like “navigate to https://example.com” to the browser driver.

3: Browser Driver (The Executor)

  • Example: The chromedriver.exe file (for Chrome, which needs to be downloaded separately, and set path for the same within the argument, don’t worry about that for now, we will learn more about it in the upcoming lessons) listens to WebDriver’s instructions and translates them into browser-specific actions. Similarly, geckodriver.exe performs this role for Firefox.

4: Browser (The Worker)

  • The browser (e.g., Chrome, Firefox) performs the actions, such as navigating to a page or clicking a button.

Memory Map of Selenium Architecture

Here’s a detailed representation of how Selenium components interact:

+---------------------+      +------------------------+      +-----------------------+
| Your Test Script | ---> | Selenium WebDriver | ---> | Browser Driver |
+---------------------+ +------------------------+ +-----------------------+
---> | Chrome/Firefox etc. |
+-----------------------+

Explanation of Diagram

1: Test Script

  • Contains commands like opening a website or filling a form.
    Example: driver.get("https://example.com") instructs the browser to open the specified URL.

2: WebDriver

  • Translates your test script into a universal language for browser drivers.
    Example: It converts driver.get() into a low-level command the driver understands.

3: Browser Driver

  • Executes WebDriver instructions on the respective browser.
    Example:
  • chromedriver.exe executes commands on Chrome.
  • geckodriver.exe does the same for Firefox.

4: Browser

  • The actual browser (like Chrome, Firefox) executes the commands, such as clicking a button or navigating to a URL.

Selenium revolutionizes testing by automating repetitive browser tasks, saving time, and improving accuracy. Despite its learning curve and some quirks, its benefits make it indispensable for modern testing needs. Pair it with complementary tools to unlock its full potential and enjoy faster, smarter testing workflows.

Ready to simplify your testing process? Let Selenium take the wheel and drive your testing automation forward! 🚀

--

--

Automate This.
Automate This.

Written by Automate This.

Join me as I share insights, tips, and experiences from my journey in quality assurance, automation, and coding! https://www.linkedin.com/in/iammriganksaxena/

No responses yet