Playwright is a powerful browser automation library for Python, enabling developers to automate tasks on web applications with ease. One common use case is to simulate form submissions on a website. In this article, we'll explore how to use Playwright to perform simple form submissions in Python.

Getting Started with Playwright

Before diving into code, ensure you have Python and node.js installed on your machine. Begin by installing Playwright through pip with the following command:

pip install playwright

After installation, execute the following command in your terminal to install the necessary browser binaries:

python -m playwright install

With Playwright ready, we can start scripting.

Automating a Simple Form Submission

Let's walk through a basic example of automating a form submission using Playwright in Python. Consider a simple login form with username and password fields.

Form Page HTML

Here is a sample HTML form page:

<form id="login-form">
  <input type="text" name="username" id="username" placeholder="Enter Username"/>
  <input type="password" name="password" id="password" placeholder="Enter Password"/>
  <button type="submit">Submit</button>
</form>

Writing the Script

Now, let's write a Python script using Playwright to automate the submission of this form. We'll fill in the form and submit it:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # Launch a browser
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()

    # Navigate to the form page
    page.goto("https://example.com/login")

    # Fill in the form fields
    page.fill("#username", "testuser")
    page.fill("#password", "securepassword")

    # Submit the form
    page.click("button[type=submit]")

    # Wait for navigation after submission
    page.wait_for_load_state('networkidle')

    # Output the page's title to verify the submission
    print(page.title())

    # Close the browser
    browser.close()

Explanation of the Script

1. sync_playwright() starts or connects to the Playwright server. 2. p.chromium.launch(headless=False) launches a new browser instance in non-headless mode so you can see what's happening during the script execution. 3. page.goto("https://example.com/login") navigates to the webpage containing the form. 4. page.fill() fills in the username and password. Selector strings ("#username" and "#password") match the input fields' IDs. 5. page.click() simulates a click on the submit button. 6. page.wait_for_load_state('networkidle') waits for the navigation after form submission to complete. 7. Finally, page.title() returns the title of the page after submission for verification purposes. You can replace this with any post-submission check necessary for your use case.

Conclusion

Using Playwright for form submissions is straightforward and efficient. It provides flexibility by supporting multiple browsers through the same interface. Whether for testing purposes or scraping, Playwright is a robust choice for automating web interactions. Experiment with different site complexities to see how Playwright can enhance your browser automation tasks.