Ottima guida all'apprendimento della classe Burattinaio Browser (Tutorial 8)


Puppeteer è una libreria js di nodi open source e viene utilizzata un'automazione web e uno strumento di web scraping. Hai bisogno della conoscenza di base di Javascript e della struttura HTML DOM per iniziare a lavorare con Puppeteer. Questa serie di tutorial di Puppeteer è distribuita nei segmenti seguenti che ti forniranno tutta l'esperienza necessaria per iniziare a lavorare con Puppeteer. 

Tutorial burattinaio

Tutorial Tosca # 1: Panoramica del burattinaio

Tutorial Tosca # 2: Variabili d'ambiente del burattinaio

Tutorial Tosca # 3: Panoramica su Puppeteer Web Scraping e Puppeteer Test Automation

Tutorial Tosca # 4: Installa Puppeteer

Tutorial Tosca # 5: Progetto Puppeteer di esempio

Tutorial Tosca # 6: Test di automazione dei burattinai

Tutorial Tosca # 7: Classe burattinaio

Tutorial Tosca # 8: Classe browser burattinaio

Tosca Tutorial # 9: Classe di pagina dei burattinai

In questo tutorial "Puppeteer Browser Class", avremo una comprensione approfondita delle classi sotto menzionate che consistono in importanti spazi dei nomi, eventi e altri metodi esaustivi necessari per lavorare con le tecniche di web scraping di Puppeteer.  

burattinaio Classe BrowserFetcher

Puppeteer BrowserFetcher Class viene utilizzato per scaricare e gestire le diverse versioni del browser. La classe BrowserFetcher opera su una stringa di revisione che specifica la versione del browser Chrome. Il numero di revisione può essere ottenuto da per saperne di più, clicca qui. Nel caso di Firefox, scarica il browser ogni notte in base al numero di versione.

L'esempio seguente mostra come scaricare e avvia il browser Chrome utilizzando la classe BrowserFetcher.

const browserFetcher = burattinaio.createBrowserFetcher(); const revInfo = attendi browserFetcher.download('766890'); const browserChrome= await burpeteer.launch({executablePath: revInfo.executablePath})

Non è possibile lavorare contemporaneamente con un'altra istanza della classe BrowserFetcher. I metodi usati di frequente della classe BrowserFetcher sono spiegati nelle sezioni successive.

burattinaio Classe BrowserFetcher - Metodi:

I metodi seguenti sono disponibili nella classe browserfetcher del burattinaio,

browserFetcher.canDownload (revisione) - Con l'aiuto del numero di revisione del browser, questo metodo controlla la disponibilità del browser specificato come parte della richiesta di intestazione. Il metodo restituisce il valore booleano (vero o falso) in base alla disponibilità.

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

browserFetcher.download (revisione [, progressCallback]) - Questo metodo scarica il browser Chrome utilizzando l'argomento del numero di revisione. Qui progressCallback è un argomento opzionale che chiama la funzione con due argomenti: byte scaricati e byte totali. Questo metodo restituisce le informazioni di revisione come un oggetto promessa.

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

browserFetcher.host () - Restituisce il nome host, che viene utilizzato per il download del browser.

const hostName = browserFetcher.host ();

browserFetcher.localRevisions () - Restituisce l'elenco di tutte le revisioni disponibili nel sistema locale.

const revList = browserFetcher.localRevisions ();

browserFetcher.platform () - Restituisce il nome della piattaforma dell'host, che sarà uno qualsiasi dei mac, Linux, win32 o win64.

const platformName = browserFetcher.platform ();

browserFetcher.product () - Restituisce il nome del browser che sarà Chrome o Firefox

const productName = browserFetcher.product ();

browserFetcher.remove (revisione) - Questo metodo viene utilizzato per rimuovere la revisione specificata per il prodotto / browser corrente. Restituisce l'oggetto della promessa, che viene risolto dopo il completamento del processo.

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

browserFetcher.revisionInfo (revisione) - Restituirà un oggetto sulle informazioni di revisione che includono revisione, folderPath, executablePath, url, local e product.

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

Riferimento: Clicchi per saperne di più, clicca qui per saperne di più sui metodi della classe BrowserFetcher.

burattinaio Classe browser

La classe Puppeteer Browser viene creata quando il burattinaio ha avviato o connesso il browser utilizzando burattinaio. pranzo or burattinaio.connect metodi.

L'esempio seguente mostra come creare la classe Browser e la pagina utilizzando il riferimento del browser.

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

Gli eventi ei metodi usati di frequente della classe Browser sono spiegati nella sezione successiva.

burattinaio Classe browser - Eventi:

Gli eventi seguenti sono disponibili nella classe del browser,

  • browser.on ('disconnesso') - Questo evento viene attivato quando il browser viene chiuso / bloccato o browser.disconnetti viene chiamato il metodo.
  • browser.on ('targetchanged') - Questo evento viene attivato quando l'URL del target è cambiato.
  • browser.on ("targetcreated") - Questo evento viene attivato quando la nuova pagina viene aperta in una nuova scheda o finestra con il metodo browser.nuovaPagina or finestra.apri.
  • browser.on ("targetdestroyed") - Questo evento viene attivato quando l'obiettivo viene distrutto, ovvero la pagina viene chiusa.

burattinaio Classe browser - Metodi:

I metodi seguenti sono disponibili nella classe browser,

  • browser.browserContexts () - Restituisce l'elenco di tutti i contesti del browser. Per un browser appena avviato, questo metodo restituirà la singola istanza di BrowserContext.
  • browser.close () - Questo metodo viene utilizzato per chiudere tutte le pagine del browser Chrome aperte. 

attendi browser.close ();

  • browser.createIncognitoBrowserContext () - Crea / restituisce il contesto del browser in incognito, che non condividerà mai i cookie o la cache con altri contesti del browser. Nell'esempio seguente, la pagina web (google) verrà aperta in modalità di navigazione in incognito.

(async () => {
  const chromeBrowser = attende puppeteer.launch ();
  // Crea un nuovo contesto del browser in incognito.
  const context = attende chromeBrowser.createIncognitoBrowserContext ();
  const pageChrome = attendi context.newPage ();
  attende pageChrome.goto ("https://www.google.com");
}) ();

  • browser.defaultBrowserContext () - Restituisce il contesto del browser predefinito che non può essere distrutto o chiuso.
  • browser.disconnect () - Scollegherà il browser dal burattinaio. Ma in questo caso il browser rimarrà in esecuzione.
  • browser.isConnected () - Questo metodo controlla se il browser è connesso o meno. Restituirà valori booleani basati sul controllo.

const boolFlag = attendi browser.isConnected ();

  • browser.newPage () - Questo metodo creerà una nuova pagina e restituirà l'istanza della pagina.

const page = attende browser.newPage ();

  • browser.pages () - Questo metodo restituisce l'elenco di tutte le pagine che sono attualmente nello stato aperto.

const pageList = attende browser.pages ();

  • browser.process () - Questo metodo restituisce il processo del browser creato. Se il browser viene creato utilizzando browser.connect metodo e restituirà un valore nullo.
  • browser.target () - Questo metodo restituisce la destinazione associata al browser.

const target = attende browser.target ();

  • browser.targets () - Restituisce l'elenco di tutti i target attivi all'interno del browser.

const targetList = attende browser.targets ();

  • browser.userAgent () - Restituisce l'oggetto della promessa sull'agente originale del browser.
  • browser.version () - Restituisce la versione del browser nel formato 'HeadlessChrome / xx.x.xxxx.x "per chrome senza testa e" Chrome / xx.x.xxxx.x 'per chrome non headless. Il formato può cambiare in una versione futura.
  • browser.waitForTarget (predicato [, opzioni]) - Cercherà in tutti i contesti del browser e attenderà il target.

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

  • browser.wsEndpoint () - Restituisce l'URL del web socket del browser.

const wsUrl = attende browser.wsEndPoint ();

Riferimento: Clicchi per saperne di più, clicca qui per saperne di più sugli eventi e sui metodi della classe Browser.

burattinaio Classe BrowserContext

La classe BrowserContext aiuta a far funzionare più istanze del browser. Dopo aver avviato un'istanza del browser, per impostazione predefinita, viene utilizzato un singolo BrowserContext. Il browserChrome.nuova pagina() metodo crea una pagina nell'oggetto classe BrowserContext predefinito. Se una pagina Web richiama un'altra pagina, la nuova pagina dovrebbe appartenere al contesto del browser della pagina padre. Qui, la nuova pagina può essere creata usando le window.open () metodo. 

Nell'esempio seguente, Puppeteer ha la capacità di creare un contesto del browser in modalità "in incognito". Il contesto del browser "in incognito" non scrive alcun dato nella memoria.

// Creazione del contesto del browser in incognito const contextIncognito = await browserChrome.createIncognitoBrowserContext(); // Creazione di una nuova pagina tramite il contesto del browser. const pageChrome = await contextIncognito.newPage(); await pageChrome.goto('https://www.google.com'); //chiudi il contesto dopo l'uso await contextIncognito.close();

Gli eventi e i metodi usati di frequente della classe BrowserContext sono spiegati nella sezione successiva.

burattinaio Classe BrowserContext - Eventi:

Gli eventi seguenti sono disponibili nella classe browsercontext,

  • browserContext.on (targetchanged) - Questo evento viene attivato quando l'URL della destinazione all'interno del contesto del browser è cambiato.
  • browserContext.on (targetcreated) - Questo evento viene attivato dopo la creazione di all'interno del contesto del browser. I metodi finestra.apri browserContext.newPage sono responsabili di questo evento.
  • browserContext.on ('targetdestroyed') - Questo evento viene attivato quando la destinazione viene distrutta nel contesto del browser.

burattinaio Classe BrowserContext - Metodi:

I metodi seguenti sono disponibili nella classe browsercontext,

  • browserContext.browser () - Questo metodo restituisce l'oggetto browser disponibile nel contesto del browser.
  • browserContext.clearPermissionOverrides () - Questo metodo rimuove tutte le sostituzioni di autorizzazioni dal contesto del browser. L'esempio seguente mostra come utilizzare questo metodo: 

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

  • browserContext.close () - Questo metodo viene utilizzato per chiudere o distruggere il contesto del browser. Tutti i browser disponibili nel contesto del browser verranno chiusi.

browserContext.close ();

  • browserContext.isIncognito () - Questo metodo viene utilizzato per verificare se il browser è stato creato in modalità "in incognito" o meno. Restituisce un valore booleano (true - modalità di navigazione in incognito o false - modalità non di navigazione in incognito) in base alla modalità browser. Per impostazione predefinita, qualsiasi browser viene richiamato in modalità "non di navigazione in incognito".

const boolIsIncognito = browserContext.isIncognito ();

  • browserContext.newPage () - Questo metodo viene utilizzato per creare una nuova pagina nello stesso contesto del browser.

browserContext.newPage ();

  • browserContext.overridePermissions (origine, autorizzazione) - Questo metodo viene utilizzato per concedere l'autorizzazione specificata all'origine, ovvero l'URL di destinazione. Le diverse autorizzazioni disponibili per la concessione sono:
  • "geolocalizzazione"
  • 'midi-sysex' (midi esclusivo del sistema)
  • "midi"
  • 'spingere'
  • 'telecamera'
  • "notifiche"
  • 'microfono'
  • "sensore di luce ambientale"
  • 'accelerometro'
  • "sincronizzazione in background"
  • 'giroscopio'
  • 'accessibilità-eventi'
  • "lettura appunti"
  • 'magnetometro'
  • "scrittura-appunti"
  • "gestore dei pagamenti"

L'esempio seguente mostra come concedere l'autorizzazione:

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

  • browserContext.pages () - Questo metodo restituisce l'elenco di tutte le pagine aperte disponibili nel contesto del browser. Qualsiasi pagina non visibile non verrà elencata qui.

const openPageList = browserContext.pages ();

  • browserContext.targets () - Questo metodo restituisce l'elenco di tutti i target attivi disponibili nel contesto del browser. Qualsiasi pagina non visibile non verrà elencata qui.

const activeTargetList = browserContext.targets ();

  • browserContext.waitForTarget (predicato [, opzioni]) - Questo metodo viene utilizzato per attendere la comparsa di un target e la restituzione dell'oggetto target. L'argomento "predicate" è fondamentalmente una chiamata di funzione per ciascuno degli obiettivi. Inoltre, facoltativamente, possiamo passare alcuni valori di configurazione come timeout come secondo argomento.
await pageChrome.evaluate(() => window.open('https://www.google.com/')); const newWindowTarget = await browserContext.waitForTarget(target => target.url() === 'https://www.google.com/');

Riferimento: Clicchi per saperne di più, clicca qui per saperne di più sugli eventi e sui metodi della classe BrowserContext.

Conclusione:

In questo tutorial "Puppeteer Browser Class", abbiamo spiegato la classe BrowserFetcher, la classe BrowserContext e la classe Browser che include gli spazi dei nomi importanti (se presenti), gli eventi (se presenti) e i metodi utilizzati frequentemente nelle tecniche di web scraping di Puppeteer con esempi. Nel prossimo articolo, spiegheremo le classi Page, Frame e Dialog.

K Mondal

Ciao, sono K. Mondal, sono associato a un'organizzazione leader. Ho più di 12 anni di esperienza lavorativa in diversi domini, ad esempio sviluppo di applicazioni, test di automazione, consulente IT. Sono molto interessato all'apprendimento di diverse tecnologie. Sono qui per soddisfare la mia aspirazione e attualmente contribuisco come autore e sviluppatore di siti Web sia in LambdaGeeks. Collegati a LinkedIn- https://www.linkedin.com/in/kumaresh-mondal/

Post Recenti