My puppeteer scripts now use deno.
No more need for npm in my personal stack! The native
browser’s path comes from which
.
import puppeteer from "https://deno.land/x/puppeteer@16.2.0/mod.ts";
const chrome = "chromium"; // Browser Chrome: "firefox" | "chromium" | "google-chrome" | ...
const product = "chrome"; // Product Base: "firefox" | "chrome"
const command = new Deno.Command("which", { args: [chrome] });
const { status, stdout, stderr } = command.outputSync();
const executablePath = new TextDecoder().decode(stdout).trim();
const browser = await puppeteer.launch({
headless: false,
executablePath: executablePath,
product: product,
});
const site = "example.com";
const page = await browser.newPage();
await page.setViewport({ width: 1024, height: 768 });
await page.goto("https://" + site);
await page.screenshot({ path: site + ".png" });
await page.waitForSelector('a');
const url = await page.evaluate(() => {
return document.querySelector('a').href;
});
console.log(url);
await browser.close();
deno run --allow-all main.ts