Classe de marionnettiste - Un excellent guide d'apprentissage du didacticiel de marionnettiste 7

Classe de marionnettiste

Puppeteer, qui est une bibliothèque open-source node js, peut être utilisé comme outil de scraping Web. La compréhension de la ligne de commande, de Javascript et de la structure HTML DOM devrait être bonne pour commencer avec ce didacticiel de marionnettiste. Le tutoriel sur la série de marionnettistes est distribué dans la sous-section ci-dessous pour avoir une bonne prise sur 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

Tutoriel Tosca # 9: Classe de page de marionnettiste

Dans ce didacticiel «Puppeteer Class», nous expliquerons les classes ci-dessous 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. 

Nous expliquerons les composants importants avec des exemples tout au long de cet article.  

Classe de marionnettiste

Conceptuellement, la classe est un modèle d'un objet qui définit un ensemble d'instructions (variables et méthodes). Ici, la classe Puppeteer est définie à l'aide de javascript pour effectuer différentes actions pour effectuer un scraping Web. Vérifions l'exemple ci-dessous, le module de classe Puppeteer a été utilisé pour lancer une instance Web Chromium.

const puppeteer = require('puppeteer');
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.goto('https://www.google.com');
  // We can write steps here
  await browserChrome.close();
})();

La classe Puppeteer fournit également plusieurs espaces de noms et méthodes, qui prennent en charge le processus de scraping Web. Les espaces de noms et méthodes fréquemment utilisés sont expliqués dans les sections suivantes.

Classe de marionnettiste - Espaces de noms:

C'est un conteneur qui définit plusieurs identifiants, méthodes, variables, etc., en javascript. C'est une façon de regrouper le code de manière logique et organisée. Les espaces de noms ci-dessous sont fournis par la classe Puppeteer.

marionnettiste.appareils : Il renvoie une liste de périphériques pouvant être utilisés par la méthode page.emulate (options) pour effectuer du grattage dans les appareils mobiles. 

Exemple - Ouvrir et fermer une page Web Google sur un appareil mobile -

const puppeteer = require('puppeteer');
const samsung = puppeteer.devices['Samsung J5'];
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.emulate(samsung);
  await pageChrome.goto('https://www.google.com'); 
  await browserChrome.close();
})();

marionnettiste.erreurs : En travaillant avec différentes méthodes de marionnettiste, il y a un risque d'exceptions. Surtout, si les méthodes sont incapables de répondre aux requêtes, cela génère des erreurs. Il existe différentes classes définies pour gérer les erreurs via l'espace de noms 'puppeteer.errors'.

Exemple - pour la méthode page.waitForSelector, si l'élément Web n'apparaît pas dans le délai spécifié, l'erreur de temporisation apparaîtra. Veuillez consulter l'exemple ci-dessous, qui montre une approche pour gérer le délai d'expiration,

try {
  await page.waitForSelector('<web-element>');
} catch (err) {
  if (err instanceof puppeteer.errors.TimeoutError) {
    // Write code to handle the timeout error.
  }
} 

marionnettiste.networkConditions : Il renvoie une liste de conditions réseau qui peuvent être utilisées sur la méthode page.emulateNetworkConditions (networkConditions). La liste complète des conditions du réseau est définie ici.

Exemple - Grâce à cet exemple de code, nous ouvrirons la page Web Google en utilisant une condition réseau prédéfinie.

const puppeteer = require('puppeteer');
const net = puppeteer.networkConditions['Fast 3G'];
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.emulateNetworkConditions(net);
  await pageChrome.goto('https://www.google.com');
  await browserChrome.close();
})();

marionnettiste.produit: Il renvoie le nom du navigateur, qui sera utilisé pour l'automatisation (Chrome ou Firefox). Le produit pour le navigateur est défini par la variable d'environnement PUPPETEER_PRODUCT ou l'option de produit disponible dans la méthode de classe marionnettiste puppeteer.launch ([options]). La valeur par défaut est Chrome.

Référence: Cliquez ici pour en savoir plus sur les espaces de noms Puppeteer Class.

Classe de marionnettiste - Méthodes:

Les méthodes contiennent des instructions pour exécuter l'action spécifique. La classe marionnettiste a les méthodes ci-dessous,

puppeteer.clearCustomQueryHandlers () - Il efface tous les gestionnaires enregistrés.

puppeteer.connect (options) - Cette méthode est utilisée pour connecter le marionnettiste à tous les navigateurs existants. Il renvoie un objet de type promise qui indique l'état de ce processus asynchrone. Exemple - Dans l'exemple ci-dessous, le marionnettiste se déconnecte du navigateur actuel et se reconnecte,

const puppeteer = require('puppeteer');
(async () => {
  const browserChrome = await puppeteer.launch();
  // Copy the endpoint reference which will be reconnected later
  const endpoint = browserChrome.wsEndpoint();
  // Disconnect puppeteer
  browserChrome.disconnect();
  // Use the endpoint to re-connect
  const browserChrome2 = await puppeteer.connect({endpoint});
  // Close second instance of Chromium
  await browserChrome2.close();
})();

puppeteer.createBrowserFetcher ([options]) - Il crée un objet de recherche de navigateur pour télécharger et gérer les différentes versions des navigateurs (Chrome et Firefox).

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandlerNames () - Il renvoie un tableau de tous les gestionnaires de requêtes personnalisés enregistrés.

puppeteer.defaultArgs ([options]) - Il renvoie les options de configuration par défaut du navigateur Chrome sous forme de tableau lors du lancement. De plus, nous pouvons définir les options configurables d'un navigateur à l'aide de l'option d'argument optionnel.

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - Il renvoie le chemin attendu par le marionnettiste pour l'instance de navigateur fournie. Le chemin qui ne serait pas disponible lors du téléchargement a été ignoré par la variable d'environnement PUPPETEER_SKIP_DOWNLOAD. De plus, nous pouvons utiliser les variables d'environnement PUPPETEER_EXECUTABLE_PATH et PUPPETEER_CHROMIUM_REVISION pour changer le chemin.

const args = marionnettiste.executablePath ();

puppeteer.launch ([options]) - Cette méthode de classe de marionnettiste est utilisée pour lancer le navigateur Web. Grâce à l'argument optionnel, on peut passer les différentes configurations du navigateur, telles que produit (nom du navigateur), headless, devtools, etc. Cette méthode retourne l'objet de promesse, qui contient la référence du navigateur lancé.

navigateur const = attendre puppeteer.launch ();

puppeteer.registerCustomQueryHandler (nom, queryHandler) - Il est utilisé pour enregistrer un gestionnaire de requêtes personnalisé. Ici, «nom» fournit le nom du gestionnaire de requêtes et «queryHandler» définit le gestionnaire de requêtes personnalisé réel.

puppeteer.unregisterCustomQueryHandler (nom) - Il est utilisé pour désinscrire tout gestionnaire de requêtes personnalisé.

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

Classe cible

La classe cible fournit des méthodes pour travailler avec des cibles. Les méthodes les plus fréquemment utilisées qui sont disponibles avec la classe cible sont expliquées dans la section suivante.

Classe cible - Méthodes:

Les méthodes ci-dessous sont disponibles dans la classe des cibles -

  • Target.browser () - Il renvoie l'objet navigateur lié à la cible.
  • Target.browserContext () - Il renvoie un objet de type browserContext qui est lié à la cible.
  • Target.createCDPSession () - Il crée et renvoie la session de protocole devtool du chrome, qui est attachée à la cible.
  • Target.opener () - Il renvoie la cible qui ouvre cette cible. Fondamentalement, cette méthode est utilisée pour obtenir la cible parent. Il renvoie null pour la cible de niveau supérieur.
  • Target.page () - Il renvoie l'objet page de la cible. Si le type de la cible n'est pas une page, elle renvoie une valeur nulle.
  • Target.type () - Il est utilisé pour obtenir le type de cible. La valeur de retour peut être l'une des options - "background_page", "page", "shared_worker", "service_worker", "browser" ou "other".
  • Cible URL() - Il renvoie l'url de la cible.
  • Target.worker () - Il renvoie l'objet Webworker. La valeur de retour est nulle si la cible n'est ni 'service_worker' ni 'shared_worker'.

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

Classe ConsoleMessage

Les objets de classe ConsoleMessage sont distribués par page via l'événement de console. Les méthodes fréquemment utilisées de la classe consoleMessage sont expliquées dans la section suivante.

Classe ConsoleMessage - Méthodes:

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

  • consoleMessage.args () - Il renvoie un tableau d'objets JSHandler. Le JSHandler empêche l'objet JS lié d'être récupéré jusqu'à ce que le handle soit supprimé. Il est automatiquement détruit lorsque le contexte du navigateur parent est détruit.
  • consoleMessage.location () - Il renvoie un objet de la ressource, qui comprend les paramètres ci-dessous.
  • url - Il indique l'URL de la ressource connue. S'il n'est pas connu, il gardera un indéfini valeur.
  • LineNumber - C'est le numéro de ligne basé sur 0 qui est disponible dans la ressource. S'il n'est pas disponible, il conservera un indéfini valeur.
  • columNumber - C'est le numéro de colonne basé sur 0 qui est disponible dans la ressource. S'il n'est pas disponible, il conservera un indéfini valeur.
  • consoleMessage.stackTrace () - Il renvoie une liste d'objets (chaque objet fait référence à une ressource) qui comprend les paramètres ci-dessous.
  • url - Il indique l'URL de la ressource connue. S'il n'est pas connu, il gardera un indéfini valeur.
  • LineNumber - C'est le numéro de ligne basé sur 0 qui est disponible dans la ressource. S'il n'est pas disponible, il conservera un indéfini valeur.
  • columNumber - C'est le numéro de colonne basé sur 0 qui est disponible dans la ressource. S'il n'est pas disponible, il conservera un indéfini valeur.
  • consoleMessage.text () - Il renvoie le texte de la console.
  •  consoleMessage.type () - Il renvoie la chaîne comme type de message de console. Le type peut être l'une des valeurs - log, debug, info, error, warning, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd.

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

TimeoutError, classe

En travaillant avec différents marionnettistes, il y a un risque d'exceptions. Surtout, si les méthodes sont incapables de répondre aux requêtes, cela génère des erreurs. La classe TimeoutError est utilisée pour gérer ce type d'exception.

Exemple de classe TimeoutError - pour la méthode page.waitForSelector, si l'élément Web n'apparaît pas dans le délai spécifié, l'erreur de délai d'expiration apparaîtra. Veuillez consulter l'exemple ci-dessous, qui montre une approche pour gérer le délai d'expiration,

try {
  await page.waitForSelector('<element>');
} catch (e) {
  if (e instanceof puppeteer.errors.TimeoutError) {
    // Write code to handle the error.
  }
} 

Classe FileChooser

L'objet de classe du sélecteur de fichiers est créé à l'aide de la méthode page.waitForFileChooser. La classe FileChooser est utilisée pour interagir avec les fichiers. Les méthodes fréquemment utilisées de la classe FileChooser sont expliquées dans la section suivante.

Classe FileChooser - Méthodes:

Les méthodes ci-dessous sont disponibles pour la classe FileChooser -

  • fileChooser.accept (file_with_path) - Cette méthode est utilisée pour télécharger n'importe quel fichier (pour lequel le chemin est fourni comme argument).
  • fileChooser.cancel () - Cette méthode est utilisée pour annuler le processus de téléchargement de fichiers.
  • fileChooser.isMultiple () - Cette méthode vérifie si le fileChooser permet de sélectionner plusieurs valeurs. Il renvoie une expression booléenne (vrai ou faux).

Un exemple de classe FileChooser -

const [fileChooser] = await Promise.all([
  page.waitForFileChooser(),
  page.click('#attach-button'), 
]);
await fileChooser.accept(['/puppeteer_proj/data/sample_file.pdf']);

Conclusion:

Dans ce didacticiel «Puppeteer Class», nous avons expliqué la classe Puppeteer, la classe Target, la classe MessageConsole et la classe TimeoutError qui comprend 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 des exemples. Dans le prochain article, nous expliquerons la classe BrowserContext, Browser et BrowserContext.

À propos de K Mondal

Bonjour, je suis K. Mondal, je suis associé à une organisation de premier plan. J'ai plus de 12 ans d'expérience de travail dans des domaines tels que le développement d'applications, les tests d'automatisation, le consultant en informatique. Je suis très intéressé par l'apprentissage de différentes technologies. Je suis ici pour répondre à mon aspiration et je contribue actuellement en tant qu'auteur et développeur de site Web à la fois dans LambdaGeeks.
Connectez-vous à LinkedIn - https://www.linkedin.com/in/kumaresh-mondal/

Laisser un commentaire

Votre adresse email n'apparaîtra pas. Les champs obligatoires sont marqués *

Geeks Lambda