Grand guide d'apprentissage de la classe de navigateur de marionnettes (tutoriel 8)

Puppeteer est une bibliothèque de nœuds js open source et est utilisée comme outil d'automatisation Web ainsi que comme outil de scraping Web. Vous avez besoin d'une compréhension de base de Javascript et de la structure HTML DOM pour commencer à travailler avec Puppeteer. Cette série de didacticiels Puppeteer est distribuée dans les segments ci-dessous qui vous fourniront toute l'expérience nécessaire pour commencer à travailler avec Puppeteer. 

Tutoriel de marionnettiste

Tutoriel Tosca # 1: Aperçu du marionnettiste

Tutoriel Tosca # 2: Variables d'environnement de marionnettiste

Tutoriel Tosca # 3: Présentation de l'automatisation du scraping Web et des tests de marionnettiste

Tutoriel Tosca # 4: Installez Puppeteer

Tutoriel Tosca # 5: Exemple de projet de marionnettiste

Tutoriel Tosca # 6: Test d'automatisation des marionnettistes

Tutoriel Tosca # 7: Classe de marionnettiste

Tutoriel Tosca # 8: Classe de navigateur de marionnettiste

Tosca Tutorial # 9: Classe de page de marionnettiste

Dans ce didacticiel «Puppeteer Browser Class», nous aurons une compréhension approfondie des classes mentionnées ci-dessous, qui comprennent les espaces de noms importants, les événements et d'autres méthodes exhaustives nécessaires pour travailler avec les techniques de scraping Web Puppeteer.  

Marionnettiste Classe BrowserFetcher

Puppeteer BrowserFetcher Class est utilisé pour télécharger et gérer les différentes versions de navigateur. La classe BrowserFetcher fonctionne sur une chaîne de révision qui spécifie la version du navigateur Chrome. Le numéro de révision peut être obtenu auprès de ici. Dans le cas de Firefox, il télécharge le navigateur tous les soirs en fonction du numéro de version.

L'exemple ci-dessous montre comment télécharger et lancer le navigateur chrome en utilisant la classe BrowserFetcher.

const browserFetcher = puppeteer.createBrowserFetcher(); const revInfo = attendre browserFetcher.download('766890'); const browserChrome= attendre puppeteer.launch({executablePath : revInfo.executablePath})

Il n'est pas possible de travailler simultanément avec une autre instance de la classe BrowserFetcher. Les méthodes fréquemment utilisées de la classe BrowserFetcher sont expliquées dans les sections suivantes.

Marionnettiste Classe BrowserFetcher - Méthodes:

Les méthodes ci-dessous sont disponibles dans la classe browserfetcher marionnettiste,

browserFetcher.canDownload (révision) - À l'aide du numéro de révision du navigateur, cette méthode vérifie la disponibilité du navigateur spécifié dans le cadre de la demande d'en-tête. La méthode renvoie la valeur booléenne (vrai ou faux) en fonction de la disponibilité.

const boolVar = browserFetcher.canDownload ('766890');

browserFetcher.download (révision [, progressCallback]) - Cette méthode télécharge le navigateur Chrome à l'aide de l'argument du numéro de révision. Ici, progressCallback est un argument facultatif qui appelle la fonction avec deux arguments - octets téléchargés et octets totaux. Cette méthode renvoie les informations de révision en tant qu'objet de promesse.

const revInfo = browserFetcher.download ('766890');

browserFetcher.host () - Il renvoie le nom d'hôte, qui est utilisé pour le téléchargement du navigateur.

const hostName = browserFetcher.host ();

browserFetcher.localRevisions () - Il renvoie la liste de toutes les révisions disponibles dans le système local.

const revList = browserFetcher.localRevisions ();

browserFetcher.platform () - Il renvoie le nom de plate-forme de l'hôte, qui sera l'un des mac, Linux, win32 ou win64.

const platformName = browserFetcher.platform ();

browserFetcher.product () - Il renvoie le nom du navigateur qui sera soit chrome ou firefox

const productName = browserFetcher.product ();

browserFetcher.remove (révision) - Cette méthode est utilisée pour supprimer la révision spécifiée pour le produit / navigateur actuel. Il renvoie l'objet de promesse, qui est résolu une fois le processus terminé.

const revInfo = browserFetcher.remove ('766890');

browserFetcher.revisionInfo (révision) - Il renverra un objet sur les informations de révision qui incluent la révision, le chemin du dossier, le chemin exécutable, l'url, le local et le produit.

const revInfo = browserFetcher.revisionInfo ('766890');

Référence: Cliquez ici pour en savoir plus sur les méthodes de classe BrowserFetcher.

Marionnettiste Classe de navigateur

La classe Navigateur de marionnettiste est créée lorsque le marionnettiste a lancé ou connecté le navigateur à l'aide de marionnettiste.lancement or marionnettiste.connect méthodes.

L'exemple ci-dessous montre comment créer la classe et la page Browser à l'aide de la référence du navigateur.

const marionnettiste = require('marionnettiste'); (async () => { const navigateurChrome = attendre puppeteer.launch(); const pageChrome = attendre navigateurChrome.nouvellePage(); attendre pageChrome.goto('https://www.google.com'); attendre navigateurChrome.close( ); })();

Les événements et méthodes fréquemment utilisés de la classe Browser sont expliqués dans la section suivante.

Marionnettiste Classe de navigateur - Événements:

Les événements ci-dessous sont disponibles dans la classe du navigateur,

  • browser.on ('déconnecté') - Cet événement est déclenché lorsque le navigateur est fermé / planté ou navigateur.déconnecter la méthode est appelée.
  • browser.on ('targetchanged') - Cet événement est déclenché lorsque l'url de la cible a changé.
  • browser.on ('targetcreated') - Cet événement est déclenché lorsque la nouvelle page s'ouvre dans un nouvel onglet ou une nouvelle fenêtre par la méthode navigateur.nouvellePage or fenêtre.ouverte.
  • browser.on ('targetdestroyed') - Cet événement est déclenché lorsque la cible est détruite, c'est-à-dire que la page est fermée.

Marionnettiste Classe de navigateur - Méthodes:

Les méthodes ci-dessous sont disponibles dans la classe de navigateur,

  • browser.browserContexts () - Il renvoie la liste de tous les contextes de navigateur. Pour un navigateur nouvellement lancé, cette méthode renverra l'instance unique de BrowserContext.
  • browser.close () - Cette méthode est utilisée pour fermer toutes les pages ouvertes du navigateur Chrome. 

attendre browser.close ();

  • browser.createIncognitoBrowserContext () - Il crée / renvoie le contexte du navigateur incognito, qui ne partagera jamais les cookies ou le cache avec d'autres contextes de navigateur. Dans l'exemple ci-dessous, la page Web (google) sera ouverte en mode navigation privée.

(async () => {
  const chromeBrowser = attendre puppeteer.launch ();
  // Créer un nouveau contexte de navigateur incognito.
  const context = attendre chromeBrowser.createIncognitoBrowserContext ();
  const pageChrome = attendre context.newPage ();
  attendre pageChrome.goto ('https://www.google.com');
}) ();

  • browser.defaultBrowserContext () - Il renvoie le contexte du navigateur par défaut qui ne peut pas être détruit ou fermé.
  • browser.disconnect () - Cela déconnectera le navigateur du marionnettiste. Mais, le navigateur restera en cours d'exécution dans ce cas.
  • browser.isConnected () - Cette méthode vérifie si le navigateur est connecté ou non. Il renverra des valeurs booléennes basées sur la vérification.

const boolFlag = attendre browser.isConnected ();

  • browser.newPage () - Cette méthode créera une nouvelle page et retournera l'instance de la page.

page const = attendre browser.newPage ();

  • browser.pages () - Cette méthode retourne la liste de toutes les pages qui sont actuellement à l'état ouvert.

const pageList = attendre browser.pages ();

  • browser.process () - Cette méthode renvoie le processus de navigateur créé. Si le navigateur est créé en utilisant navigateur.connecter méthode, et il renverra une valeur nulle.
  • browser.target () - Cette méthode renvoie la cible associée au navigateur.

cible const = attendre browser.target ();

  • browser.targets () - Il renvoie la liste de toutes les cibles actives dans le navigateur.

const targetList = attendre browser.targets ();

  • browser.userAgent () - Il renvoie l'objet de promesse sur l'agent d'origine du navigateur.
  • browser.version () - Il renvoie la version du navigateur au format 'HeadlessChrome / xx.x.xxxx.x 'pour le chrome sans tête et' Chrome / xx.x.xxxx.x 'pour le chrome sans tête. Le format peut changer dans une prochaine version.
  • browser.waitForTarget (prédicat [, options]) - Il recherchera dans tous les contextes du navigateur et attendra la cible.

attendre pageChrome.evaluate(() => window.open('https://techiescience.com/'));
const newWindowTarget = wait browser.waitForTarget(target => target.url() === 'https://techiescience.com/');

  • browser.wsEndpoint () - Il renvoie l'URL du socket Web du navigateur.

const wsUrl = attendre browser.wsEndPoint ();

Référence: Cliquez ici pour en savoir plus sur les événements et méthodes de classe Browser.

Marionnettiste BrowserContext, classe

La classe BrowserContext permet de faire fonctionner plusieurs instances de navigateur. Après le lancement d'une instance de navigateur, par défaut, un seul BrowserContext est utilisé. Le navigateurChrome.nouvelle page() crée une page dans l'objet de classe BrowserContext par défaut. Si une page Web appelle une autre page, la nouvelle page doit appartenir au contexte du navigateur de la page parente. Ici, la nouvelle page peut être créée en utilisant le window.open () méthode. 

Dans l'exemple ci-dessous, Puppeteer a la possibilité de créer un contexte de navigateur en mode «incognito». Le contexte du navigateur «incognito» n'écrit aucune donnée dans le stockage.

// Création du contexte du navigateur Incognito const contextIncognito = await browserChrome.createIncognitoBrowserContext(); // Création d'une nouvelle page via le contexte du navigateur. const pageChrome = attendre contextIncognito.newPage(); attendre pageChrome.goto('https://www.google.com'); //ferme le contexte après utilisation await contextIncognito.close();

Les événements et méthodes fréquemment utilisés de la classe BrowserContext sont expliqués dans la section suivante.

Marionnettiste Classe BrowserContext - Événements:

Les événements ci-dessous sont disponibles dans la classe Browsercontext,

  • browserContext.on (targetchanged) - Cet événement est déclenché lorsque l'url de la cible dans le contexte du navigateur a changé.
  • browserContext.on (targetcreated) - Cet événement est déclenché après la création de l'intérieur du contexte du navigateur. Les méthodes fenêtre.ouverte et navigateurContext.newPage sont responsables de cet événement.
  • browserContext.on ('targetdestroyed') - Cet événement est déclenché lorsque la cible est détruite dans le contexte du navigateur.

Marionnettiste Classe BrowserContext - Méthodes:

Les méthodes ci-dessous sont disponibles dans la classe Browsercontext,

  • browserContext.browser () - Cette méthode renvoie l'objet navigateur qui est disponible dans le contexte du navigateur.
  • browserContext.clearPermissionOverrides () - Cette méthode supprime tous les remplacements d'autorisation du contexte du navigateur. L'exemple ci-dessous montre comment utiliser cette méthode - 

const browserContext = browser.defaultBrowserContext ();
browserContext.overridePermissions ('https://www.google.com', ['clipboard-read']);
browserContext.clearPermissionOverrides ();

  • browserContext.close () - Cette méthode est utilisée pour fermer ou détruire le contexte du navigateur. Tous les navigateurs disponibles dans le contexte du navigateur seront fermés.

browserContext.close ();

  • browserContext.isIncognito () - Cette méthode permet de vérifier si le navigateur a été créé en mode «incognito» ou non. Il renvoie une valeur booléenne (true - mode incognito ou false - mode non incognito) en fonction du mode navigateur. Par défaut, tout navigateur est appelé en mode «non-incognito».

const boolIsIncognito = browserContext.isIncognito ();

  • browserContext.newPage () - Cette méthode est utilisée pour créer une nouvelle page dans le même contexte de navigateur.

browserContext.newPage ();

  • browserContext.overridePermissions (origine, autorisation) - Cette méthode est utilisée pour accorder l'autorisation spécifiée à l'origine, c'est-à-dire l'url cible. Les différentes autorisations qui peuvent être accordées sont -
  • «géolocalisation»
  • 'midi-sysex' (midi exclusif au système)
  • «midi»
  • 'pousser'
  • 'caméra'
  • «notifications»
  • 'microphone'
  • 'détecteur de lumière ambiante'
  • 'accéléromètre'
  • 'background-sync'
  • 'gyroscope'
  • 'accessibilité-événements'
  • 'clipboard-read'
  • «magnétomètre»
  • 'presse-papiers-écrire'
  • «gestionnaire de paiement»

L'exemple ci-dessous montre comment accorder une autorisation -

const browserContext = browser.defaultBrowserContext ();
wait browserContext.overridePermissions ('https://www.google.com', ['geolocation']);

  • browserContext.pages () - Cette méthode renvoie la liste de toutes les pages ouvertes disponibles dans le contexte du navigateur. Les pages non visibles ne seront pas répertoriées ici.

const openPageList = browserContext.pages ();

  • browserContext.targets () - Cette méthode renvoie la liste de toutes les cibles actives disponibles dans le contexte du navigateur. Les pages non visibles ne seront pas répertoriées ici.

const activeTargetList = browserContext.targets ();

  • browserContext.waitForTarget (prédicat [, options]) - Cette méthode est utilisée pour attendre qu'une cible apparaisse et renvoie l'objet cible. L'argument «prédicat» est essentiellement un appel de fonction pour chacune des cibles. De plus, facultativement, nous pouvons transmettre certaines valeurs de configuration telles que timeout comme deuxième argument.
attendre pageChrome.evaluate(() => window.open('https://www.google.com/')); const newWindowTarget = attendre browserContext.waitForTarget(cible => cible.url() === 'https://www.google.com/');

Référence: Cliquez ici pour en savoir plus sur les événements et méthodes de la classe BrowserContext.

Conclusion:

Dans ce didacticiel «Puppeteer Browser Class», nous avons expliqué la classe BrowserFetcher, la classe BrowserContext et la classe Browser qui incluent les espaces de noms importants (le cas échéant), les événements (le cas échéant) et les méthodes fréquemment utilisées dans les techniques de scraping Web Puppeteer avec exemples. Dans le prochain article, nous expliquerons les classes Page, Frame et Dialog.

Laisser un commentaire