Learn to automate web tasks, scraping, testing, and more with interactive tutorials and real-world examples
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
Puppeteer runs headless Chrome, providing fast and reliable automation for modern web applications.
Built for JavaScript developers, with Promise-based API and modern async/await syntax.
Screenshot generation, PDF creation, performance testing, and comprehensive debugging tools.
Used by Google and thousands of companies for testing, scraping, and automation at scale.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Set viewport size
await page.setViewport({ width: 1280, height: 720 });
// Navigate to website
await page.goto('https://example.com', {
waitUntil: 'networkidle2'
});
// Take screenshot
await page.screenshot({
path: 'screenshot.png',
fullPage: true
});
await browser.close();
})();
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://quotes.toscrape.com/');
// Extract quotes
const quotes = await page.evaluate(() => {
return Array.from(document.querySelectorAll('.quote'))
.map(quote => ({
text: quote.querySelector('.text').textContent,
author: quote.querySelector('.author').textContent,
tags: Array.from(quote.querySelectorAll('.tag'))
.map(tag => tag.textContent)
}));
});
console.log(quotes);
await browser.close();
})();
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://example.com/login');
// Fill login form
await page.type('#username', 'user@example.com');
await page.type('#password', 'secretpassword');
// Click login button
await page.click('#login-button');
// Wait for navigation
await page.waitForNavigation();
// Check if login was successful
const isLoggedIn = await page.$('.dashboard') !== null;
console.log('Login successful:', isLoggedIn);
await browser.close();
})();
const puppeteer = require('puppeteer');
describe('User Login', () => {
let browser;
let page;
beforeEach(async () => {
browser = await puppeteer.launch();
page = await browser.newPage();
});
afterEach(async () => {
await browser.close();
});
test('should login successfully', async () => {
await page.goto('https://example.com/login');
await page.type('#username', 'testuser');
await page.type('#password', 'testpass');
await page.click('#login-btn');
await page.waitForSelector('.dashboard');
const welcomeText = await page.$eval('.welcome',
el => el.textContent
);
expect(welcomeText).toContain('Welcome');
});
});