tdro

Another wandering soul whispering into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by cdd20.

tdro micro.thedroneely.com (edited) view
  • Markdown Plaintext Embed Permalink
  • 143/50 words 48s read
    My puppeteer scripts now use deno.

    No more need for npm in my personal stack! The native browser’s path comes from which.

    javascript
    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();
    Basic Boilerplate: Captures a picture of example.com (main.ts)
    shell
    deno run --allow-all main.ts
    Deno Version: 1.45.5
    #gists #webdev