Introduction
Test automation is a game-changer for software testing, allowing you to run repetitive tests quickly and efficiently. In this guide, we’ll walk you through the basics of test automation using two powerful tools: Selenium with Python and Playwright with TypeScript. By the end of this post, you’ll have written your first automated test script for a real-life example—a login page.
We’ll cover:
- Setting up your environment.
- Writing your first test script.
- Running the test and interpreting the results.
Let’s get started!
Step 1: Setting Up Your Environment
For Selenium/Python:
- Install Python: Download Python from python.org and ensure it’s added to your PATH during installation.
- Install Selenium: Use pip to install Selenium:
pip <span>install </span>seleniumpip <span>install </span>seleniumpip install selenium
Enter fullscreen mode Exit fullscreen mode
- Download WebDriver: Download the appropriate WebDriver for your browser (e.g., ChromeDriver for Chrome) and add it to your system PATH.
For Playwright/TypeScript:
- Install Node.js: Download Node.js from nodejs.org and install it.
- Install Playwright: Use npm to install Playwright:
npm init playwright@latestnpm init playwright@latestnpm init playwright@latest
Enter fullscreen mode Exit fullscreen mode
This command will create a new Playwright project and install all necessary dependencies.
- Set Up TypeScript: If you’re new to TypeScript, don’t worry—Playwright handles most of the setup for you.
Step 2: Writing Your First Test Script
Example Scenario: Automating Login on a Sample Website
We’ll automate the login process for a sample website like https://the-internet.herokuapp.com/login. The goal is to:
- Navigate to the login page.
- Enter valid credentials.
- Submit the form.
- Verify successful login.
Selenium/Python Example
Here’s how to write the test script using Selenium and Python:
<span>from</span> <span>selenium</span> <span>import</span> <span>webdriver</span><span>from</span> <span>selenium.webdriver.common.by</span> <span>import</span> <span>By</span><span>import</span> <span>time</span><span># Step 1: Initialize WebDriver </span><span>driver</span> <span>=</span> <span>webdriver</span><span>.</span><span>Chrome</span><span>()</span><span>try</span><span>:</span><span># Step 2: Navigate to the login page </span> <span>driver</span><span>.</span><span>get</span><span>(</span><span>"</span><span>https://the-internet.herokuapp.com/login</span><span>"</span><span>)</span><span># Step 3: Locate username and password fields </span> <span>username_field</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>ID</span><span>,</span> <span>"</span><span>username</span><span>"</span><span>)</span><span>password_field</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>ID</span><span>,</span> <span>"</span><span>password</span><span>"</span><span>)</span><span># Step 4: Enter credentials </span> <span>username_field</span><span>.</span><span>send_keys</span><span>(</span><span>"</span><span>tomsmith</span><span>"</span><span>)</span><span>password_field</span><span>.</span><span>send_keys</span><span>(</span><span>"</span><span>SuperSecretPassword!</span><span>"</span><span>)</span><span># Step 5: Click the login button </span> <span>login_button</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>CSS_SELECTOR</span><span>,</span> <span>"</span><span>button[type=</span><span>'</span><span>submit</span><span>'</span><span>]</span><span>"</span><span>)</span><span>login_button</span><span>.</span><span>click</span><span>()</span><span># Step 6: Verify successful login </span> <span>success_message</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>ID</span><span>,</span> <span>"</span><span>flash</span><span>"</span><span>)</span><span>assert</span> <span>"</span><span>You logged into a secure area!</span><span>"</span> <span>in</span> <span>success_message</span><span>.</span><span>text</span><span>print</span><span>(</span><span>"</span><span>Login successful!</span><span>"</span><span>)</span><span>finally</span><span>:</span><span># Step 7: Close the browser </span> <span>time</span><span>.</span><span>sleep</span><span>(</span><span>3</span><span>)</span> <span># Wait to see the result </span> <span>driver</span><span>.</span><span>quit</span><span>()</span><span>from</span> <span>selenium</span> <span>import</span> <span>webdriver</span> <span>from</span> <span>selenium.webdriver.common.by</span> <span>import</span> <span>By</span> <span>import</span> <span>time</span> <span># Step 1: Initialize WebDriver </span><span>driver</span> <span>=</span> <span>webdriver</span><span>.</span><span>Chrome</span><span>()</span> <span>try</span><span>:</span> <span># Step 2: Navigate to the login page </span> <span>driver</span><span>.</span><span>get</span><span>(</span><span>"</span><span>https://the-internet.herokuapp.com/login</span><span>"</span><span>)</span> <span># Step 3: Locate username and password fields </span> <span>username_field</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>ID</span><span>,</span> <span>"</span><span>username</span><span>"</span><span>)</span> <span>password_field</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>ID</span><span>,</span> <span>"</span><span>password</span><span>"</span><span>)</span> <span># Step 4: Enter credentials </span> <span>username_field</span><span>.</span><span>send_keys</span><span>(</span><span>"</span><span>tomsmith</span><span>"</span><span>)</span> <span>password_field</span><span>.</span><span>send_keys</span><span>(</span><span>"</span><span>SuperSecretPassword!</span><span>"</span><span>)</span> <span># Step 5: Click the login button </span> <span>login_button</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>CSS_SELECTOR</span><span>,</span> <span>"</span><span>button[type=</span><span>'</span><span>submit</span><span>'</span><span>]</span><span>"</span><span>)</span> <span>login_button</span><span>.</span><span>click</span><span>()</span> <span># Step 6: Verify successful login </span> <span>success_message</span> <span>=</span> <span>driver</span><span>.</span><span>find_element</span><span>(</span><span>By</span><span>.</span><span>ID</span><span>,</span> <span>"</span><span>flash</span><span>"</span><span>)</span> <span>assert</span> <span>"</span><span>You logged into a secure area!</span><span>"</span> <span>in</span> <span>success_message</span><span>.</span><span>text</span> <span>print</span><span>(</span><span>"</span><span>Login successful!</span><span>"</span><span>)</span> <span>finally</span><span>:</span> <span># Step 7: Close the browser </span> <span>time</span><span>.</span><span>sleep</span><span>(</span><span>3</span><span>)</span> <span># Wait to see the result </span> <span>driver</span><span>.</span><span>quit</span><span>()</span>from selenium import webdriver from selenium.webdriver.common.by import By import time # Step 1: Initialize WebDriver driver = webdriver.Chrome() try: # Step 2: Navigate to the login page driver.get("https://the-internet.herokuapp.com/login") # Step 3: Locate username and password fields username_field = driver.find_element(By.ID, "username") password_field = driver.find_element(By.ID, "password") # Step 4: Enter credentials username_field.send_keys("tomsmith") password_field.send_keys("SuperSecretPassword!") # Step 5: Click the login button login_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']") login_button.click() # Step 6: Verify successful login success_message = driver.find_element(By.ID, "flash") assert "You logged into a secure area!" in success_message.text print("Login successful!") finally: # Step 7: Close the browser time.sleep(3) # Wait to see the result driver.quit()
Enter fullscreen mode Exit fullscreen mode
Playwright/TypeScript Example
Here’s how to write the same test script using Playwright and TypeScript:
<span>import</span> <span>{</span> <span>test</span><span>,</span> <span>expect</span> <span>}</span> <span>from</span> <span>'</span><span>@playwright/test</span><span>'</span><span>;</span><span>test</span><span>(</span><span>'</span><span>Login Test</span><span>'</span><span>,</span> <span>async </span><span>({</span> <span>page</span> <span>})</span> <span>=></span> <span>{</span><span>// Step 1: Navigate to the login page</span><span>await</span> <span>page</span><span>.</span><span>goto</span><span>(</span><span>'</span><span>https://the-internet.herokuapp.com/login</span><span>'</span><span>);</span><span>// Step 2: Fill in the username and password fields</span><span>await</span> <span>page</span><span>.</span><span>fill</span><span>(</span><span>'</span><span>#username</span><span>'</span><span>,</span> <span>'</span><span>tomsmith</span><span>'</span><span>);</span><span>await</span> <span>page</span><span>.</span><span>fill</span><span>(</span><span>'</span><span>#password</span><span>'</span><span>,</span> <span>'</span><span>SuperSecretPassword!</span><span>'</span><span>);</span><span>// Step 3: Click the login button</span><span>await</span> <span>page</span><span>.</span><span>click</span><span>(</span><span>'</span><span>button[type="submit"]</span><span>'</span><span>);</span><span>// Step 4: Verify successful login</span><span>const</span> <span>successMessage</span> <span>=</span> <span>await</span> <span>page</span><span>.</span><span>textContent</span><span>(</span><span>'</span><span>#flash</span><span>'</span><span>);</span><span>expect</span><span>(</span><span>successMessage</span><span>).</span><span>toContain</span><span>(</span><span>'</span><span>You logged into a secure area!</span><span>'</span><span>);</span><span>console</span><span>.</span><span>log</span><span>(</span><span>'</span><span>Login successful!</span><span>'</span><span>);</span><span>});</span><span>import</span> <span>{</span> <span>test</span><span>,</span> <span>expect</span> <span>}</span> <span>from</span> <span>'</span><span>@playwright/test</span><span>'</span><span>;</span> <span>test</span><span>(</span><span>'</span><span>Login Test</span><span>'</span><span>,</span> <span>async </span><span>({</span> <span>page</span> <span>})</span> <span>=></span> <span>{</span> <span>// Step 1: Navigate to the login page</span> <span>await</span> <span>page</span><span>.</span><span>goto</span><span>(</span><span>'</span><span>https://the-internet.herokuapp.com/login</span><span>'</span><span>);</span> <span>// Step 2: Fill in the username and password fields</span> <span>await</span> <span>page</span><span>.</span><span>fill</span><span>(</span><span>'</span><span>#username</span><span>'</span><span>,</span> <span>'</span><span>tomsmith</span><span>'</span><span>);</span> <span>await</span> <span>page</span><span>.</span><span>fill</span><span>(</span><span>'</span><span>#password</span><span>'</span><span>,</span> <span>'</span><span>SuperSecretPassword!</span><span>'</span><span>);</span> <span>// Step 3: Click the login button</span> <span>await</span> <span>page</span><span>.</span><span>click</span><span>(</span><span>'</span><span>button[type="submit"]</span><span>'</span><span>);</span> <span>// Step 4: Verify successful login</span> <span>const</span> <span>successMessage</span> <span>=</span> <span>await</span> <span>page</span><span>.</span><span>textContent</span><span>(</span><span>'</span><span>#flash</span><span>'</span><span>);</span> <span>expect</span><span>(</span><span>successMessage</span><span>).</span><span>toContain</span><span>(</span><span>'</span><span>You logged into a secure area!</span><span>'</span><span>);</span> <span>console</span><span>.</span><span>log</span><span>(</span><span>'</span><span>Login successful!</span><span>'</span><span>);</span> <span>});</span>import { test, expect } from '@playwright/test'; test('Login Test', async ({ page }) => { // Step 1: Navigate to the login page await page.goto('https://the-internet.herokuapp.com/login'); // Step 2: Fill in the username and password fields await page.fill('#username', 'tomsmith'); await page.fill('#password', 'SuperSecretPassword!'); // Step 3: Click the login button await page.click('button[type="submit"]'); // Step 4: Verify successful login const successMessage = await page.textContent('#flash'); expect(successMessage).toContain('You logged into a secure area!'); console.log('Login successful!'); });
Enter fullscreen mode Exit fullscreen mode
Step 3: Running the Test
For Selenium/Python:
Run the Python script using the following command:
python your_script_name.pypython your_script_name.pypython your_script_name.py
Enter fullscreen mode Exit fullscreen mode
If everything is set up correctly, the browser will open, perform the login steps, and close automatically.
For Playwright/TypeScript:
Run the Playwright test using the following command:
npx playwright <span>test</span>npx playwright <span>test</span>npx playwright test
Enter fullscreen mode Exit fullscreen mode
Playwright will execute the test and generate a detailed report.
Step 4: Interpreting the Results
Both scripts will verify that the login was successful by checking for a specific success message. If the message is found, the test passes; otherwise, it fails.
- Selenium Output: A message like
Login successful!
will be printed to the console. - Playwright Output: Playwright provides a detailed HTML report. You can view it by running:
npx playwright show-reportnpx playwright show-reportnpx playwright show-report
Enter fullscreen mode Exit fullscreen mode
Real-Life Example: Why Automate Login Tests?
Imagine you’re working on an e-commerce platform where users log in frequently. Manually testing the login functionality after every code change is time-consuming and error-prone. Automating this process ensures that:
- The login feature works as expected.
- Any regression issues are caught early.
- You save time for more complex testing tasks.
Conclusion
Congratulations! You’ve just written your first automated test scripts using Selenium/Python and Playwright/TypeScript. These tools are powerful and versatile, making them ideal for automating web applications.
Next steps:
- Explore advanced features like handling dynamic elements, managing waits, and integrating tests into CI/CD pipelines.
- Experiment with other tools and frameworks to find what works best for your team.
Visit us at Testamplify | X | Instagram | LinkedIn
原文链接:Start Test Automation: Step-by-Step Guide for Beginners
暂无评论内容