Geweldige leergids van Puppeteer Browser Class (Tutorial 8)

Puppeteer is een open-source node js-bibliotheek en wordt gebruikt als webautomatiserings- en webscraping-tool. Je hebt een basiskennis van Javascript en de HTML DOM-structuur nodig om met Puppeteer te kunnen werken. Deze Puppeteer-tutorialserie is verdeeld in de onderstaande segmenten, waardoor je alle nodige ervaring opdoet om met Puppeteer te gaan werken. 

Puppeteer-zelfstudie

Tosca Tutorial # 1: Poppenspeler Overzicht

Tosca Tutorial # 2: Poppenspeler omgevingsvariabelen

Tosca Tutorial # 3: Puppeteer Web Scraping en Puppeteer Test Automation Overzicht

Tosca Tutorial # 4: Installeer Puppeteer

Tosca Tutorial # 5: Voorbeeld van een poppenspelerproject

Tosca Tutorial # 6: Testen van automatisering van poppenspelers

Tosca Tutorial # 7: Poppenspelersklasse

Tosca Tutorial # 8: Poppenspeler Browser-klasse

Tosca Tutorial # 9: Puppeteer Page-klasse

In deze tutorial "Puppeteer Browser Class" zullen we een diepgaand begrip hebben van de hieronder genoemde klassen, die bestaan ​​uit de belangrijke naamruimten, evenementen en andere uitgebreide methoden die nodig zijn om met Puppeteer-webschraaptechnieken te werken.  

poppenspeler BrowserFetcher-klasse

Puppeteer BrowserFetcher Class wordt gebruikt om de verschillende browserversies te downloaden en te beheren. BrowserFetcher-klasse werkt op een revisietekenreeks die de versie van de Chrome-browser specificeert. Het revisienummer is verkrijgbaar via hier​ In het geval van Firefox wordt de browser 's nachts gedownload op basis van het versienummer.

Onderstaand voorbeeld laat zien hoe te downloaden en start de chrome-browser met behulp van de klasse BrowserFetcher.

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

Het is niet mogelijk om gelijktijdig te werken met een ander exemplaar van de BrowserFetcher-klasse. De veelgebruikte methoden van de BrowserFetcher-klasse worden in de volgende secties uitgelegd.

poppenspeler BrowserFetcher-klasse - Methoden:

De onderstaande methoden zijn beschikbaar in de poppenspeler browserfetcher-klasse,

browserFetcher.canDownload (revisie) - Met behulp van het revisienummer van de browser controleert deze methode de beschikbaarheid van de opgegeven browser als onderdeel van het headerverzoek. De methode retourneert de booleaanse waarde (true of false) op basis van beschikbaarheid.

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

browserFetcher.download (revisie [, progressCallback]) - Deze methode downloadt de Chrome-browser met behulp van het argument revisienummer. Hier is progressCallback een optioneel argument dat de functie aanroept met twee argumenten: gedownloade bytes en totaal aantal bytes. Deze methode retourneert de revisie-informatie als een belofte-object.

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

browserFetcher.host () - Het retourneert de hostnaam, die wordt gebruikt voor het downloaden van de browser.

const hostName = browserFetcher.host ();

browserFetcher.localRevisions () - Het retourneert de lijst met alle revisies die beschikbaar zijn in het lokale systeem.

const revList = browserFetcher.localRevisions ();

browserFetcher.platform () - Het retourneert de platformnaam van de host, die een van de mac, Linux, win32 of win64 zal zijn.

const platformName = browserFetcher.platform ();

browserFetcher.product () - Het retourneert de browsernaam die ofwel chrome of firefox zal zijn

const productName = browserFetcher.product ();

browserFetcher.remove (revisie) - Deze methode wordt gebruikt om de gespecificeerde revisie voor het huidige product / browser te verwijderen. Het retourneert het belofte-object, dat wordt opgelost na voltooiing van het proces.

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

browserFetcher.revisionInfo (revisie) - Het retourneert een object met revisie-informatie die revisie, folderPath, executablePath, url, lokaal en product omvat.

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

Referentie: Klik hier voor meer informatie over BrowserFetcher Class-methoden.

poppenspeler Browserklasse

De klasse Puppeteer Browser wordt gemaakt toen de poppenspeler de browser startte of verbinding maakte met poppenspeler. lancering or poppenspeler.connect werkwijzen.

Onderstaand voorbeeld laat zien hoe u de Browser-klasse en -pagina maakt met behulp van de browserreferentie.

const poppenspeler = vereisen('poppenspeler'); (async () => { const browserChrome = wacht op puppeteer.launch(); const pageChrome = wacht op browserChrome.newPage(); wacht op pageChrome.goto('https://www.google.com'); wacht op browserChrome.close( ); })();

De vaak gebruikte gebeurtenissen en methoden van de browserklasse worden in de volgende sectie uitgelegd.

poppenspeler Browserklasse - Gebeurtenissen:

Onderstaande gebeurtenissen zijn beschikbaar in browserklasse,

  • browser.on ('verbinding verbroken') - Deze gebeurtenis wordt geactiveerd wanneer de browser wordt gesloten / gecrasht of browser.verbinding verbreken methode wordt genoemd.
  • browser.on ('targetchanged') - Deze gebeurtenis wordt geactiveerd wanneer de url van het doel is gewijzigd.
  • browser.on ('targetcreated') - Deze gebeurtenis wordt geactiveerd wanneer de nieuwe pagina wordt geopend in een nieuw tabblad of venster door de methode browser.nieuwePagina or venster.open.
  • browser.on ('targetdestroyed') - Deze gebeurtenis wordt geactiveerd wanneer het doel wordt vernietigd, dwz de pagina wordt gesloten.

poppenspeler Browserklasse - Methoden:

De onderstaande methoden zijn beschikbaar in browserklasse,

  • browser.browserContexts () - Het retourneert de lijst met alle browsercontexten. Voor een nieuw gelanceerde browser retourneert deze methode de enkele BrowserContext-instantie.
  • browser.close () - Deze methode wordt gebruikt om alle geopende Chromium-browserpagina's te sluiten. 

wacht op browser.close ();

  • browser.createIncognitoBrowserContext () - Het creëert / retourneert de incognito browsercontext, die de cookies of cache nooit zal delen met andere browsercontexten. In het onderstaande voorbeeld wordt de webpagina (google) geopend in de incognitomodus.

(async () => {
  const chromeBrowser = wachten op puppeteer.launch ();
  // Maak een nieuwe incognito browsercontext.
  const context = wachten op chromeBrowser.createIncognitoBrowserContext ();
  const pageChrome = wacht op context.newPage ();
  wacht op pageChrome.goto ('https://www.google.com');
}) ();

  • browser.defaultBrowserContext () - Het retourneert een standaard browsercontext die niet kan worden vernietigd of gesloten.
  • browser.disconnect () - De browser wordt losgekoppeld van de poppenspeler. Maar in dit geval blijft de browser actief.
  • browser.isConnected () - Deze methode controleert of de browser is verbonden of niet. Het retourneert booleaanse waarden op basis van de controle.

const boolFlag = wacht op browser.isConnected ();

  • browser.newPage () - Met deze methode wordt een nieuwe pagina gemaakt en wordt de instantie van de pagina geretourneerd.

const page = wacht op browser.newPage ();

  • browser.pages () - Deze methode retourneert de lijst met alle pagina's die momenteel in de geopende staat zijn.

const pageList = wacht op browser.pages ();

  • browser.proces () - Deze methode retourneert het aangemaakte browserproces. Als de browser is gemaakt met browser.verbinden methode, en het retourneert een null-waarde.
  • browser.target () - Deze methode retourneert het doel dat aan de browser is gekoppeld.

const target = wacht op browser.target ();

  • browser.targets () - Het retourneert de lijst met alle actieve doelen in de browser.

const targetList = wacht op browser.targets ();

  • browser.userAgent () - Het retourneert het belofte-object over de oorspronkelijke agent van de browser.
  • browser.version () - Het geeft de versie van de browser terug in de indeling 'HeadlessChrome / xx.x.xxxx.x 'voor headless chrome en' Chrome / xx.x.xxxx.x 'voor chroom zonder kop. Het formaat kan in een toekomstige release veranderen.
  • browser.waitForTarget (predikaat [, opties]) - Het zoekt in alle browsercontexten en wacht op het doel.

wacht op paginaChrome.evaluate(() => window.open('https://techiescience.com/'));
const newWindowTarget = wacht op browser.waitForTarget(target => target.url() === 'https://techiescience.com/');

  • browser.wsEndpoint () - Het retourneert de websocket-URL van de browser.

const wsUrl = wacht op browser.wsEndPoint ();

Referentie: Klik hier voor meer informatie over gebeurtenissen en methoden van browserklassen.

poppenspeler BrowserContext-klasse

De klasse BrowserContext helpt bij het bedienen van meerdere browserinstanties. Na het starten van een browserinstantie wordt standaard één BrowserContext gebruikt. De browserChrome.nieuwe pagina() methode maakt een pagina in het standaard klasseobject BrowserContext. Als een webpagina een andere pagina oproept, moet de nieuwe pagina behoren tot de browsercontext van de bovenliggende pagina. Hier kan de nieuwe pagina worden aangemaakt met de window.open () methode. 

In het onderstaande voorbeeld heeft Puppeteer de mogelijkheid om een ​​browsercontext te creëren in de 'incognito'-modus. De 'incognito' browsercontext schrijft geen gegevens in de opslag.

// Incognito browsercontext maken const contextIncognito = wacht browserChrome.createIncognitoBrowserContext(); // Nieuwe pagina maken via de browsercontext. const pageChrome = wacht contextIncognito.newPage(); wacht op pageChrome.goto('https://www.google.com'); // sluit de context na gebruik, wacht op contextIncognito.close();

De vaak gebruikte gebeurtenissen en methoden van de BrowserContext-klasse worden in de volgende sectie uitgelegd.

poppenspeler BrowserContext-klasse - Gebeurtenissen:

Onderstaande gebeurtenissen zijn beschikbaar in browsercontextklasse,

  • browserContext.on (targetchanged) - Deze gebeurtenis wordt geactiveerd wanneer de url van het doel in de browsercontext is gewijzigd.
  • browserContext.on (targetcreated) - Deze gebeurtenis wordt geactiveerd na het maken van binnen de browsercontext. De methodes venster.open en browserContext.nieuwePagina zijn verantwoordelijk voor dit evenement.
  • browserContext.on ('targetdestroyed') - Deze gebeurtenis wordt geactiveerd wanneer het doel wordt vernietigd binnen de browsercontext.

poppenspeler BrowserContext-klasse - Methoden:

De onderstaande methoden zijn beschikbaar in de browsercontext-klasse,

  • browserContext.browser () - Deze methode retourneert het browserobject dat beschikbaar is in de browsercontext.
  • browserContext.clearPermissionOverrides () - Met deze methode worden alle overschrijvingen van machtigingen uit de browsercontext verwijderd. Het onderstaande voorbeeld laat zien hoe u deze methode kunt gebruiken - 

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

  • browserContext.close () - Deze methode wordt gebruikt om de browsercontext te sluiten of te vernietigen. Alle browsers die binnen de browsercontext beschikbaar zijn, worden gesloten.

browserContext.close ();

  • browserContext.isIncognito () - Deze methode wordt gebruikt om te controleren of de browser in de 'incognitomodus' is gemaakt of niet. Het retourneert een booleaanse waarde (true - incognitomodus of false - niet-incognitomodus) op basis van de browsermodus. Standaard wordt elke browser aangeroepen in de 'niet-incognitomodus'.

const boolIsIncognito = browserContext.isIncognito ();

  • browserContext.newPage () - Deze methode wordt gebruikt om een ​​nieuwe pagina te maken in dezelfde browsercontext.

browserContext.newPage ();

  • browserContext.overridePermissions (oorsprong, toestemming) - Deze methode wordt gebruikt om de gespecificeerde toestemming te verlenen aan de oorsprong, dwz de doel-url. De verschillende toestemmingen die beschikbaar zijn om te verlenen zijn -
  • 'geolocatie'
  • 'midi-sysex' (systeem-exclusieve midi)
  • 'midi'
  • 'Duwen'
  • 'camera'
  • 'notificaties'
  • 'microfoon'
  • 'omgevingslicht sensor'
  • 'versnellingsmeter'
  • 'achtergrond-synchronisatie'
  • 'gyroscoop'
  • 'toegankelijkheid-evenementen'
  • 'klembord lezen'
  • 'magnetometer'
  • 'klembord-schrijven'
  • 'betalingsverwerker'

Het onderstaande voorbeeld laat zien hoe u toestemming kunt verlenen -

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

  • browserContext.pages () - Deze methode retourneert de lijst met alle geopende pagina's die beschikbaar zijn in de browsercontext. Elke niet-zichtbare pagina wordt hier niet vermeld.

const openPageList = browserContext.pages ();

  • browserContext.targets () - Deze methode retourneert de lijst met alle actieve doelen die beschikbaar zijn in de browsercontext. Elke niet-zichtbare pagina wordt hier niet vermeld.

const activeTargetList = browserContext.targets ();

  • browserContext.waitForTarget (predikaat [, opties]) - Deze methode wordt gebruikt om te wachten tot een doelwit is verschenen en het doelobject heeft geretourneerd. Het argument, 'predikaat', is in feite een functieaanroep voor elk van de doelen. Optioneel kunnen we ook enkele configuratiewaarden, zoals time-out, als tweede argument doorgeven.
wacht op pageChrome.evaluate(() => window.open('https://www.google.com/')); const newWindowTarget = wacht browserContext.waitForTarget(target => target.url() === 'https://www.google.com/');

Referentie: Klik hier om meer te lezen over BrowserContext class events en methodes.

Conclusie:

In deze "Puppeteer Browser Class" -handleiding hebben we de BrowserFetcher-klasse, BrowserContext-klasse en Browser-klasse uitgelegd, die de belangrijke naamruimten (indien aanwezig), gebeurtenissen (indien aanwezig) en methoden die vaak worden gebruikt in Puppeteer-webschraaptechnieken met voorbeelden. In het volgende artikel zullen we de klasse Pagina, Frame en Dialoog uitleggen.

Laat een bericht achter