javascript - Puppeteer așteaptă pagina și setTimeout nu funcționează în funcțiile cloud Firebase

Încerc să încarc o pagină pe care o găzduiesc pe Firebase și să o transform într-un PDF cu Puppeteer. Funcționează bine cu o pagină HTML simplă. Acum obțin date de la Firebase și le afișez pe pagina mea, prin urmare trebuie să aștept ca pagina să fi

Citeste mai mult →

typescript - Cum să verifici dacă o pagină Puppeteer se află în prezent în starea de navigare?

Scriu un fel de wrapper deasupra Puppeteer. Am o funcție generală „click” și una „getHtml”:

class Page { .... async click(selector: string) { await this.context.evaluate((querySelector, text) => { const elem = document.querySe

Citeste mai mult →

typescript - canvas.getContext("webgl") returnează null atunci când se testează cu puppeteer și jest

Încerc să scriu teste snapshot pentru un renderer webgl pe care l-am scris folosind jest, puppeteer și jest-image-snapshot. Modul în care testez acest lucru este că am scris o aplicație React TestApp care conține canvas-ul, așa cum se arată mai jos:

export function TestApp(props: { width: number; height: number }): JSX.Element { return ( <div id="drawing" style={{ ...props }} > <DrawingCanvas canvasProps={props} renderBehavior={

Citeste mai mult →

typescript - Mockarea puppeteer pentru testare

Am lucrat la cod Puppeteer pentru a face capturi de ecran ale unui site web, scriind cod de teste unitare cu Jest. Codul meu este ceva de genul acesta: index.ts

import puppeteer from "puppeteer"; export async function takeScreenshot() { const browser = await puppeteer.launch({ headless: true }); try { const page = await browser.newPage(); const url = "https://someurl.com/somepage"; await page.goto(url); await page.waitF

Citeste mai mult →

javascript - Cum să faci o captură de ecran RGBA cu puppeteer?

Lucrez la o aplicație web de comparare a imaginilor cu Puppeteer și iată ce încerc să fac:

  1. deschideți o pagină Puppeteer, accesați o pagină de redare cu un component web model-viewer (o API grafică web de la Google).
  2. redă ceva cu model-viewer
  3. realizează o captură de ecran rgba după ce redarea s-a terminat (folosește page.screenshot())
  4. închide pagina.
  5. ia captura de ecran ca argument al API-ului de comparare a imaginilor (inputul ar tr

    Citeste mai mult →

javascript - Trimiterea unui mesaj pe Discord prin Puppeteer (fără bot, fără aplicație)

Scriu un script Puppeteer care deschide Discord Web, se autentifică (pas manual pentru captcha și autorizare), merge la un canal și introduce un mesaj în formularul de mesaje, și mă chinui să-l trimit.

Acesta este diferit de toate întrebările și răspunsurile existente, deoarece nu este printr-un Webhook sau o aplicație Discord.

Complicația pare să fie că elementul în care se introduce mesajul este un div contenteditable.

O altă posibilitate este că simularea tastei Enter fun

Citeste mai mult →

typescript - Cum să împachetezi Puppeteer pentru implementarea în producție folosind webpack?

Îmi creez un API Node cu Express care ar crea un PDF folosind Puppeteer pentru un URL dat. Cum pot să împachetez aplicația mea pentru producție cu Webpack? Nu vreau să instalez global Puppeteer și Express pe serverul unde o voi găzdui și nu vreau să apelez npm install pe se

Citeste mai mult →

typescript - browser nu este definit pentru ts-jest și puppeteer

Încerc să creez teste snapshot cu puppeteer pentru aplicația mea create react în typescript. Testarea obișnuită cu jest funcționează bine, dar de îndată ce încerc să creez snapshot-urile cu browser-ul și trebuie să folosesc variabila browser în fișierul meu .test.ts, primesc mesajul că browser nu este definit.

Se pare că nu pot rezolva această problemă, deși am încercat să o rezolv

Citeste mai mult →

node.js - Puppeteer: ProtocolError: Așteptarea selectorului a eșuat: Eroare de protocol: Argumentul ar trebui să aparțină aceleiași lumi JavaScript ca obiectul țintă

Am creat această funcție:

async function sendRequest(page: Page, url: string) { await Promise.all([ page.waitForNavigation(), page.goto(url), page.waitForSelector("div#header"), ]); }

Când folosesc această funcție, NodeJS afișează următorul mesaj de eroare:

ProtocolError: Waiting for selector `div#header` failed: Protocol error (Runtime.callFunctionOn): Argument should belong to the same JavaScript world as target object

Citeste mai mult →

node.js - Puppeteer: Cum să încarci doar HTML-ul fără CSS/JS/fonturi/imagini?

Folosesc Puppeteer pentru a extrage niște date și am nevoie să accesez multe pagini într-un interval relativ scurt. După o observație, am observat că acest lucru este destul de ineficient deoarece sunt interesat doar de datele din fișierul markup, în timp ce întreaga pagină cu toate imaginile,

Citeste mai mult →