playwrightvsplaywright
Playwright is a Node.js library that provides a high-level API to automate web browsers. It allows you to automate browser tasks such as generating screenshots, creating PDFs, and testing web pages by simulating user interactions. Playwright is similar to Puppeteer, but it supports more browsers and it also provide capabilities for automation of browser like Microsoft Edge and Safari.
Playwright is commonly used for web scraping, end-to-end testing, and browser automation.
Playwright is a spiritual successor to Puppeter and is available in more languages and has access to more browser types.
playwright is a Python package that allows developers to automate web browsers for end-to-end testing, web scraping, and web performance analysis. It is built on top of WebKit, Mozilla's Gecko, and Microsoft's EdgeHTML, and it is designed to be fast, reliable, and easy to use.
playwright is similar to Selenium, but it provides a more modern and powerful API, with features such as automatic waiting for elements, automatic retries, and built-in support for browser contexts, which allow you to open multiple pages in a single browser instance.
Playwright also provides an asynchronous client which makes scaling playwright-powered web scrapers easier than alternatives (like Selenium)
Example Use
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://www.example.com/form');
// fill in the form
await page.fill('input[name="name"]', 'John Doe');
await page.fill('input[name="email"]', 'johndoe@example.com');
await page.selectOption('select[name="country"]', 'US');
// submit the form
await page.click('button[type="submit"]');
// wait for the page to load after the form is submitted
await page.waitForNavigation();
// take a screenshot
await page.screenshot({path: 'form-submission.png'});
await browser.close();
})();
from playwright import sync_playwright
# Start Playwright
with sync_playwright() as playwright:
# Launch a browser instance
browser = playwright.chromium.launch()
# Open a new context (tab)
context = browser.new_context()
# Create a new page in the context
page = context.new_page()
# Navigate to a website
page.goto("https://www.example.com")
# Find an element by its id
element = page.get_by_id("example-id")
# Interact with the element
element.click()
# Fill an input form
page.get_by_name("example-name").fill("example text")
# Find and click a button
page.get_by_xpath("//button[text()='Search']").click()
# Wait for the page to load
page.wait_for_selector("#results")
# Get the page title
print(page.title)
# Close the browser
browser.close()