Starting with Playwright automation and Python
Playwright is a modern automation framework for web testing, offering powerful cross-browser support. It allows developers to automate interactions with web applications efficiently.
1. Installing Playwright
# Install Playwright using pip
pip install playwright
# Install required browsers
playwright install
2. Setting Up Playwright with Python
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://www.example.com")
browser.close()
3. Finding Elements
# Locate an element by text
element = page.locator("text=Login")
# Locate an element by CSS selector
element = page.locator("input[name='username']")
# Locate an element by XPath
element = page.locator("//input[@type='submit']")
4. Interacting with Elements
# Enter text in an input field
page.fill("input[name='username']", "my_username")
# Click a button
page.click("button#submit")
5. Handling Dropdowns
# Select an option from a dropdown
page.select_option("select#country", "US")
6. Handling Alerts
# Accept an alert
page.on("dialog", lambda dialog: dialog.accept())
7. Running a Simple Test
import unittest
from playwright.sync_api import sync_playwright
class TestGoogleSearch(unittest.TestCase):
def setUp(self):
self.playwright = sync_playwright().start()
self.browser = self.playwright.chromium.launch()
self.page = self.browser.new_page()
def test_google_search(self):
self.page.goto("https://www.google.com")
self.page.fill("input[name='q']", "Playwright Testing")
self.page.press("input[name='q']", "Enter")
self.assertIn("Playwright", self.page.title())
def tearDown(self):
self.browser.close()
self.playwright.stop()
if __name__ == "__main__":
unittest.main()
8. Headless Mode for Faster Tests
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://example.com")
browser.close()
9. Taking Screenshots
# Capture a screenshot
page.screenshot(path="screenshot.png")
10. Closing the Browser Properly
# Close the browser session completely
browser.close()