No history yet

Introduction to Playwright

Automating the Browser

Imagine you have a robot that can use a web browser exactly like a person. It can open Chrome, Firefox, or Safari, type in a web address, click buttons, fill out forms, and even take screenshots. That’s essentially what Playwright is: a powerful tool for automating web browsers.

Developed by Microsoft, Playwright is a Node.js library that provides a high-level API to control Chromium (the engine behind Chrome and Edge), Firefox, and WebKit (the engine for Safari). This cross-browser capability is a huge advantage. It means you can write one script and run it across different browsers to ensure your website works consistently for everyone, or to gather data from sites that might behave differently depending on the browser.

Playwright lets you automate tasks in the three major browser engines, all with a single, consistent set of commands.

Installation and Setup

Getting Playwright up and running involves two simple steps. First, you install the Python library using pip, the package installer for Python. This gives you access to the Playwright commands within your Python scripts.

pip install playwright

Next, you need to download the browsers that Playwright will control. The library comes with a built-in command for this. Running this command installs browser binaries for Chromium, Firefox, and WebKit that are guaranteed to work with the version of the library you just installed.

playwright install

With those two commands, your environment is ready. You've installed both the control library and the browsers it will automate.

Your First Script

Let's write a simple script to see Playwright in action. The goal is to launch a browser, navigate to a specific webpage, and take a screenshot. This covers the three most fundamental actions: launching, navigating, and interacting (in this case, capturing the page).

Here’s how you can do it. The script uses a sync_playwright context manager, which handles starting and stopping the Playwright process cleanly.

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # Launch a new browser instance (Chromium by default)
    browser = p.chromium.launch()

    # Create a new page in the browser
    page = browser.new_page()

    # Navigate to a specific URL
    page.goto("http://quotes.toscrape.com")

    # Take a screenshot and save it
    page.screenshot(path="example.png")

    # Close the browser
    browser.close()

Let’s break that down:

  1. p.chromium.launch(): This line starts a new Chromium browser. You could also use p.firefox.launch() or p.webkit.launch().
  2. browser.new_page(): Opens a new tab or window.
  3. page.goto(...): Navigates the page to the provided URL.
  4. page.screenshot(...): Captures the current state of the page and saves it as an image file.
  5. browser.close(): Shuts down the browser instance, ending the session.

This script is the foundation for almost any browser automation task. Whether you're testing a web application or scraping data, you'll always start by launching a browser and navigating to a page.

Interacting with Elements

Navigating to a page is just the first step. To do anything useful, you need to interact with its content. Playwright provides simple commands to find elements on a page and perform actions on them, like clicking or typing.

Let's modify our script to click on the "Login" link on the example website. We can locate the link by its text content.

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("http://quotes.toscrape.com")

    # Find the element by its text and click it
    page.get_by_text("Login").click()

    # Take a screenshot of the new page
    page.screenshot(path="login_page.png")

    print(f"Navigated to: {page.url}")

    browser.close()

The key new line is page.get_by_text("Login").click(). Playwright finds the first element containing the text "Login" and then simulates a mouse click on it. The new screenshot, login_page.png, will show the login form, confirming our script successfully interacted with the page. The page.url property lets us see the new web address after the click.

This ability to launch browsers, navigate, and interact with elements forms the core of Playwright's power and is the starting point for more complex automation.

Quiz Questions 1/5

What is the primary purpose of the Playwright library?

Quiz Questions 2/5

Which set of browser engines does Playwright support out-of-the-box?

With these basics, you're ready to start building more complex browser automation scripts.