Pour utiliser Puppeteer dans votre projet, vous devez d'abord l'installer.
Installation
npm i puppeteer
# or "yarn add puppeteer"
Lorsque vous installez Puppeteer, une version récente de Chromium (environ 170 Mo pour Mac, environ 282 Mo pour Linux et environ 280 Mo pour Windows) est compatible avec l'API. Pour ignorer le téléchargement, effectuer le téléchargement dans un autre chemin ou télécharger un autre navigateur, consultez la section Variables d'environnement.
marionnette
Depuis la version 1.7.0, nous publions le package puppeteer-core
. Par défaut, cette version de Puppeteer ne télécharge aucun navigateur.
npm i puppeteer-core
# or "yarn add puppeteer-core"
puppeteer-core
est conçu pour être une version allégée de Puppeteer, qui permet de lancer une installation de navigateur existante ou de se connecter à un navigateur distant. Assurez-vous que la version de Puppeteer-core que vous installez est compatible avec le navigateur auquel vous souhaitez vous connecter.
Voir marionnette et marionnettiste.
Utilisation
Puppeteer suit la dernière version LTS de maintenance de Node.
Puppeteer est probablement familier aux utilisateurs d'autres frameworks de test de navigateurs.
Vous allez créer une instance de Browser
, ouvrir des pages, puis les manipuler avec l'API Puppeteer.
Enregistrer une capture d'écran
Par exemple, pour accéder à https://example.com
et enregistrer une capture d'écran sous example.png
, enregistrez le code suivant dans example.js
.
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 définit la taille de la page initiale sur 800 × 600 px, ce qui définit la taille de la capture d'écran. La taille de la page peut être personnalisée avec Page.setViewport().
Créer un PDF
Enregistrez le fichier sous le nom hn.js
.
const puppeteer = require('puppeteer');
(async () => {
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écutez le script sur la ligne de commande:
node hn.js
Consultez Page.pdf() pour en savoir plus sur la création de PDF.
Évaluer le script dans le contexte de la page
Enregistrez le fichier sous get-dimensions.js
:
const puppeteer = require('puppeteer');
(async () => {
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écutez le script sur la ligne de commande:
node get-dimensions.js
Consultez la section Évaluer JavaScript pour en savoir plus sur l'évaluation et les méthodes associées telles que evaluateOnNewDocument
et exposeFunction
.
Paramètres d'exécution par défaut
Utilise le mode sans interface graphique
Puppeteer lance Chromium en mode sans interface graphique. Pour lancer une version complète de Chromium, définissez l'option headless
au lancement d'un navigateur:
const browser = await puppeteer.launch({ headless: false }); // default is true
Exécution d'une version intégrée de Chromium
Par défaut, Puppeteer télécharge et utilise une version spécifique de Chromium pour que son API fonctionne immédiatement. Pour utiliser Puppeteer avec une autre version de Chrome ou de Chromium, transmettez le chemin d'accès de l'exécutable lors de la création d'une instance Browser
:
const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome' });
Vous pouvez également utiliser Puppeteer avec Firefox Nightly (support expérimental).
Pour en savoir plus, consultez la page Puppeteer.launch()
.
Pour en savoir plus, consultez ce document :
- Quelle est la différence entre Chromium et Chrome ? de How-To Geek.
- La documentation Chromium décrit certaines différences pour les utilisateurs Linux.
Crée un nouveau profil utilisateur
Puppeteer crée son propre profil utilisateur de navigateur qu'il nettoie à chaque exécution.
Étapes suivantes
- En savoir plus sur Chrome sans interface graphique
- Consultez les exemples.