Lorsque je lance une nouvelle page, je dois spécifier la taille de la fenêtre d'affichage à l'aide de la fonction setViewport
:
await page.setViewport({
width: 1920,
height: 1080
})
Je veux utiliser la fenêtre d'affichage max.
Comment rendre la fenêtre redimensionnable en fonction de la taille de la fenêtre?
Je suis peut-être très en retard à ce sujet. Néanmoins pour d'autres, essayez:
const browser = await puppeteer.launch({defaultViewport: null});
Définissez l'option defaultViewport
sur null
comme ci-dessus pour désactiver la résolution 800x600. Il faut alors la résolution max.
Vous pouvez passer le drapeau --window-size
comme argument à puppeteer.launch()
pour changer la taille de la fenêtre à votre width
souhaitée et height
.
Ensuite, vous pouvez appeler la méthode Chrome Devtools Protocol Emulation.clearDeviceMetricsOverride
pour effacer les mesures de périphérique remplacées (y compris la fenêtre par défaut 800 x 600).
Cela entraînera la fenêtre pour correspondre à la taille de la fenêtre (lors de la capture d'écran, etc.).
const browser = await puppeteer.launch({
args: [
'--window-size=1920,1080',
],
});
const page = await browser.newPage();
await page._client.send('Emulation.clearDeviceMetricsOverride');
await page.screenshot({
path: 'example.png', // Image Dimensions : 1920 x 1080
});
Remarque:
page.viewport()
renverra toujours{ width: 800, height: 600 }
, Et le seul moyen de manière fiable modifier les valeurs de ces propriétés consiste à utiliserpage.setViewport()
.
Voir l'exemple complet ci-dessous:
'use strict';
const puppeteer = require('puppeteer');
(async () => {
/* ============================================================
Prerequisite: Set Window size
============================================================ */
const browser = await puppeteer.launch({
args : [
'--window-size=1920,1080',
],
});
const page = await browser.newPage();
await page.goto('https://www.example.com/');
/* ============================================================
Case 1: Default Viewport
============================================================ */
console.log('Case 1 - Width :', page.viewport().width); // Width : 800
console.log('Case 1 - Height :', page.viewport().height); // Height : 600
await page.screenshot({
path: 'image-1.png', // Image Dimensions : 800 x 600
});
/* ============================================================
Case 2: Clear Overridden Device Metrics
============================================================ */
await page._client.send('Emulation.clearDeviceMetricsOverride');
console.log('Case 2 - Width :', page.viewport().width); // Width : 800
console.log('Case 2 - Height :', page.viewport().height); // Height : 600
await page.screenshot({
path: 'image-2.png', // Image Dimensions : 1920 x 1080
});
/* ============================================================
Case 3: Manually Set Viewport
============================================================ */
await page.setViewport({
width: 1920,
height: 1080,
});
console.log('Case 3 - Width :', page.viewport().width); // Width : 1920
console.log('Case 3 - Height :', page.viewport().height); // Height : 1080
await page.screenshot({
path: 'image-3.png', // Image Dimensions : 1920 x 1080
});
/* ============================================================
Case 4: Revert Back to Default Viewport
============================================================ */
await page.setViewport({
width: 800,
height: 600,
});
console.log('Case 4 - Width :', page.viewport().width); // Width : 800
console.log('Case 4 - Height :', page.viewport().height); // Height : 600
await page.screenshot({
path: 'image-4.png', // Image Dimensions : 800 x 600
});
await browser.close();
})();
const browser = await puppeteer.launch( {"headless": false, args: ['--start-maximized'] } );
const page = await browser.newPage();
await page.setViewport({width:0, height:0});
la ligne "const browser = ..." maximise votre fenêtre chrome. Mais notez que la page est l'endroit où la fenêtre doit être définie et qu'elle serait toujours à la taille par défaut lorsque vous créez le page.
Lorsque vous définissez la fenêtre d'affichage avec largeur et hauteur sur "0", la taille de la fenêtre d'affichage devient égale à la taille du navigateur.
Comme expliqué dans ce problème
page.setViewport({ width: 0, height: 0 });
fait que le chrome définit la fenêtre en déduisant la résolution d'écran actuelle. Semble fonctionner uniquement avec headless: false
Il vaut probablement la peine de mentionner que si vous combinez puppeteer.launch({defaultViewport: null})
avec puppeteer.connect()
, encore une fois, vous devez passer {defaultViewport: null}}
, sinon la fenêtre est ramenée à sa taille par défaut. Donc dans ce cas, utilisez:
await puppeteer.connect({browserWSEndpoint: ws, defaultViewport: null})
Pour moi, la combinaison de defaultViewport: null
et args: ['--start-maximized']
m'a donné le plein écran avec une vue adaptée à la taille de l'écran:
browser = await puppeteer.launch({
headless: false,
args: [
'--start-maximized',
],
defaultViewport: null,
});