
Une fourche de marionnettiste fonctionnant sur Deno.
Le marionnettiste est une bibliothèque qui fournit une API de haut niveau pour contrôler le chrome, le chrome ou Firefox tous les soirs sur le protocole Devtools. Puppeteer s'exécute sans tête par défaut, mais peut être configuré pour exécuter un chrome ou un chrome complet (non taillé).
La plupart des choses que vous pouvez faire manuellement dans le navigateur peuvent être faites à l'aide de marionnettiste! Voici quelques exemples pour vous aider à démarrer:
Pour utiliser des marionnettes, importez-le comme tel:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Puppeteer peut utiliser n'importe quelle version récente de Chromium ou Firefox Nightly, mais cette version de Puppeteer n'est validée qu'à une version spécifique. Pour mettre en cache ces versions dans le cache de marionnettiste, exécutez les commandes ci-dessous.
PUPPETEER_PRODUCT=chrome deno run -A --unstable https://deno.land/x/[email protected]/install.ts
PUPPETEER_PRODUCT=firefox deno run -A --unstable https://deno.land/x/[email protected]/install.tsVous pouvez trouver toutes les variables d'environnement prises en charge pour personnaliser l'installation dans les documents de marionnettiste.
Puppeteer sera familier aux personnes utilisant d'autres cadres de test de navigateur. Vous créez une instance de Browser , ouvrez les pages, puis les manipulez avec l'API de Puppeteer.
Exemple - naviguer vers https://example.com et enregistrer une capture d'écran comme exemple.png :
Enregistrer le fichier en tant qu'exemple.js
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
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 ( ) ;Exécuter le script sur la ligne de commande
deno run -A --unstable example.js Le marionnettiste définit une taille de page initiale à 800 × 600px, qui définit la taille de la capture d'écran. La taille de la page peut être personnalisée avec Page.setViewport() .
Exemple - Créez un PDF.
Enregistrer le fichier en tant que hn.js
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
const browser = await puppeteer . launch ( ) ;
const page = await browser . newPage ( ) ;
await page . goto ( "https://news.ycombinator.com" , {
waitUntil : "networkidle2" ,
} ) ;
await page . pdf ( { path : "hn.pdf" , format : "A4" } ) ;
await browser . close ( ) ;Exécuter le script sur la ligne de commande
deno run -A --unstable hn.js Voir Page.pdf() pour plus d'informations sur la création de PDF.
Exemple - Évaluez le script dans le contexte de la page
Enregistrer le fichier en tant que get-dimensions.js
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
const browser = await puppeteer . launch ( ) ;
const page = await browser . newPage ( ) ;
await page . goto ( "https://example.com" ) ;
// Get the "viewport" of the page, as reported by the page.
const dimensions = await page . evaluate ( ( ) => {
return {
width : document . documentElement . clientWidth ,
height : document . documentElement . clientHeight ,
deviceScaleFactor : window . devicePixelRatio ,
} ;
} ) ;
console . log ( "Dimensions:" , dimensions ) ;
await browser . close ( ) ;Exécuter le script sur la ligne de commande
deno run -A --unstable get-dimensions.js deno-puppeteer exécute effectivement une version régulière de Puppeteer, à l'exception de quelques modifications mineures pour la rendre compatible avec Deno.
La différence la plus notable est probable qu'au lieu que certaines méthodes prennent / retourner Buffer de nœud, ils prennent / retournent Uint8Array . Une méthode renvoie également un natif Web ReadableStream au lieu du nœud Readable .
En dehors de cela, la documentation sur https://pptr.dev s'applique généralement.
Un exemple dockerfile peut être trouvé dans ce référentiel. Il installera toutes les dépendances nécessaires et montre comment exécuter le ./examples/docker.js.
Il est simplement destiné à un point de saut - personnalisez-le comme vous le souhaitez.