A Puppeteer egy nyílt forráskódú csomóponti js könyvtár, amelyet webautomatizálásra, valamint webkaparó eszközre használják. A Puppeteerrel való munka megkezdéséhez meg kell ismernie a Javascriptet és a HTML DOM-struktúrát. Ez a Puppeteer oktatósorozat az alábbi szegmensekben található, amelyek minden szükséges tapasztalattal felvértezik Önt a Puppeteerrel való munka megkezdéséhez.
Bábos bemutató
1. Tosca oktatóanyag: Bábos áttekintése
2. Tosca oktatóanyag: Bábos környezeti változók
3. Tosca oktatóanyag: A Puppeteer Web Scraping és Puppeteer Test Automation áttekintése
4. Tosca oktatóanyag: Telepítse a Puppeteer programot
5. Tosca oktatóanyag: Minta bábos projekt
6. Tosca oktatóanyag: Bábos automatizálási tesztelés
7. Tosca oktatóanyag: Bábos osztály
8. Tosca oktatóanyag: Bábos böngésző osztály
Tosca oktatói #9: Bábos oldal osztály
Ebben a „Puppeteer Browser Class” oktatóanyagban részletesebben megismerjük az alább említett osztályokat, amelyek fontos névtereket, eseményeket és egyéb kimerítő módszereket tartalmaznak, amelyek szükségesek a Puppeteer webkaparási technikáinak használatához.
Bábjátékos BrowserFetcher osztály
A Puppeteer BrowserFetcher Class a különböző böngészőverziók letöltésére és kezelésére szolgál. A BrowserFetcher osztály egy revíziós karakterláncon működik, amely meghatározza a Chrome böngésző verzióját. A felülvizsgálati szám a következő címen szerezhető be itt. Firefox esetén a verziószám alapján éjszakánként letölti a böngészőt.
Az alábbi példa bemutatja, hogyan kell letölteni és indítsa el a chrome böngészőt a BrowserFetcher osztály használatával.
const browserFetcher = bábjátékos.createBrowserFetcher(); const revInfo = várja a browserFetcher.download('766890'); const browserChrome= várja a puppeteer.launch({executablePath: revInfo.executablePath})
Nem lehetséges egyidejűleg dolgozni a BrowserFetcher osztály másik példányával. A BrowserFetcher osztály gyakran használt metódusait a következő szakaszok ismertetik.
Bábjátékos BrowserFetcher osztály – Módszerek:
Az alábbi metódusok a bábjátékos böngészőfetcher osztályban érhetők el,
browserFetcher.canDownload(felülvizsgálat) – Ez a módszer a böngésző verziószámának segítségével a fejléc kérés részeként ellenőrzi a megadott böngésző elérhetőségét. A metódus a logikai értéket (igaz vagy hamis) adja vissza a rendelkezésre állás alapján.
const boolVar = browserFetcher.canDownload('766890');
browserFetcher.download(revision[, progressCallback]) – Ez a módszer letölti a Chrome böngészőt a verziószám argumentum használatával. Itt a progressCallback egy opcionális argumentum, amely két argumentummal hívja meg a függvényt – letöltött bájtok és összes bájt. Ez a módszer ígéretként adja vissza a revíziós információkat tárgy.
const revInfo = browserFetcher.download('766890');
browserFetcher.host() – Visszaadja a böngésző letöltéséhez használt gazdagépnevet.
const hostName = böngészőFetcher.host();
browserFetcher.localRevisions() – Visszaadja a helyi rendszerben elérhető összes változat listáját.
const revList = browserFetcher.localRevisions();
browserFetcher.platform() – Visszaadja a gazdagép platformnevét, amely a mac, Linux, win32 vagy win64 bármelyike lesz.
const platformName = böngészőFetcher.platform();
browserFetcher.product() – Visszaadja a böngésző nevét, amely chrome vagy firefox lesz
const terméknév = böngészőFetcher.product();
browserFetcher.remove(felülvizsgálat) – Ez a módszer az aktuális termék/böngésző megadott változatának eltávolítására szolgál. Visszaadja az ígéret objektumot, amely a folyamat befejezése után feloldásra kerül.
const revInfo = browserFetcher.remove('766890');
browserFetcher.revisionInfo(felülvizsgálat) – Olyan objektumot ad vissza a revízióinformációkon, amelyek tartalmazzák a változatot, a folderPath-et, a executablePath-et, az url-t, a local-t és a terméket.
const revInfo = browserFetcher.revisionInfo('766890');
Referencia: Kattints itt hogy többet tudjon meg a BrowserFetcher osztály metódusairól.
Bábjátékos Böngésző osztály
A Puppeteer Browser osztály akkor jön létre, amikor a bábjátékos elindította vagy csatlakoztatta a böngészőt bábos.indít or bábszínész.csatlakozik mód.
Az alábbi példa bemutatja, hogyan kell létrehozni a Böngésző osztályt és oldalt a böngésző hivatkozás segítségével.
const bábszínész = követelmény('bábos'); (async () => { const browserChrome = várja a puppeteer.launch(); const pageChrome = await browserChrome.newPage(); várjon pageChrome.goto('https://www.google.com'); várja a browserChrome.close( ); })();
A Browser osztály gyakran használt eseményeit és metódusait a következő részben ismertetjük.
Bábjátékos Böngésző osztály – Események:
Az alábbi események böngésző osztályban érhetők el,
- browser.on('disconnected') – Ez az esemény a böngésző bezárásakor/összeomlásakor indul el, ill böngésző.lekapcsolódás módszert hívják.
- browser.on('targetchanged') – Ez az esemény akkor indul el, ha a cél URL-je megváltozik.
- browser.on('targetcreated') – Ez az esemény akkor indul el, amikor az új oldal a metódus szerint új lapon vagy ablakban nyílik meg browser.newPage or ablak.nyitni.
- browser.on('targetdestroyed') – Ez az esemény akkor indul el, amikor a célpont megsemmisül, azaz az oldal bezárul.
Bábjátékos Böngésző osztály – Módszerek:
Az alábbi metódusok érhetők el a böngésző osztályban,
- browser.browserContexts() – Visszaadja az összes böngészőkörnyezet listáját. Egy újonnan elindított böngésző esetén ez a módszer egyetlen BrowserContext példányt ad vissza.
- browser.close() – Ezzel a módszerrel bezárja az összes megnyitott chromium-böngésző oldalt.
várjon böngésző.close();
- browser.createIncognitoBrowserContext() – Létrehozza/visszaadja az inkognitó böngészőkörnyezetet, amely soha nem osztja meg a cookie-kat vagy a gyorsítótárat más böngészőkörnyezetekkel. Az alábbi példában a weboldal (google) inkognitó módban nyílik meg.
(async () => {
const chromeBrowser = várja a bábjátékost.launch();
// Új inkognitó böngészőkörnyezet létrehozása.
const context = várja a chromeBrowser.createIncognitoBrowserContext();
const pageChrome = várja a kontextust.newPage();
várjon oldalraChrome.goto('https://www.google.com');
}) ();
- browser.defaultBrowserContext() – Visszaadja az alapértelmezett böngészőkörnyezetet, amelyet nem lehet megsemmisíteni vagy bezárni.
- browser.disconnect() – Leválasztja a böngészőt a bábjátékról. A böngésző azonban ebben az esetben futni fog.
- browser.isConnected() – Ez a módszer ellenőrzi, hogy a böngésző csatlakozik-e vagy sem. Az ellenőrzés alapján logikai értékeket ad vissza.
const boolFlag = várja a böngészőt.isConnected();
- browser.newPage() – Ez a módszer új oldalt hoz létre, és visszaadja az oldal példányát.
const page = várja böngésző.newPage();
- browser.pages() – Ez a módszer visszaadja az összes jelenleg nyitott állapotban lévő oldal listáját.
const pageList = várakozás böngésző.oldalak();
- browser.process() – Ez a módszer a létrehozott böngészőfolyamatot adja vissza. Ha a böngésző a browser.connect metódust, és null értéket ad vissza.
- browser.target() – Ez a módszer a böngészőhöz társított célt adja vissza.
const target = várjon browser.target();
- browser.targets() – Visszaadja a böngészőn belüli összes aktív cél listáját.
const targetList = várakozás böngésző.targets();
- browser.userAgent() – Visszaadja az ígéret objektumot a böngésző eredeti ügynökéről.
- browser.version() – Visszaadja a böngésző verzióját „HeadlessChrome/xx.x.xxxx.x” a fej nélküli krómhoz és „Chrome/xx.x.xxxx.x' nem fej nélküli krómhoz. A formátum egy későbbi kiadásban változhat.
- browser.waitForTarget(predikátum[, beállítások]) – Az összes böngészőkörnyezetben keresni fog, és várja a célt.
várjon oldalraChrome.evaluate(() => window.open('https://lambdageeks.com/'));
const newWindowTarget = várja a böngészőt.waitForTarget(target => target.url() === 'https://lambdageeks.com/');
- browser.wsEndpoint() – Visszaadja a böngésző web socket URL-jét.
const wsUrl = várja böngészőt.wsEndPoint();
Referencia: Kattints itt hogy többet tudjon meg a Böngésző osztály eseményeiről és módszereiről.
Bábjátékos BrowserContext osztály
A BrowserContext osztály segít több böngészőpéldány működtetésében. Egy böngészőpéldány elindítása után alapértelmezés szerint egyetlen BrowserContext kerül felhasználásra. A böngésző Chrome.új oldal() metódus létrehoz egy oldalt az alapértelmezett BrowserContext osztályobjektumban. Ha egy weboldal egy másik oldalt hív meg, akkor az új oldalnak a szülőoldal böngészőkontextusához kell tartoznia. Itt az új oldal a segítségével hozható létre a window.open () módszer.
Az alábbi példában a Puppeteer képes böngészőkontextust létrehozni „inkognitó” módban. Az „inkognitó” böngészőkörnyezet nem ír adatokat a tárolóba.
// Inkognitó böngészőkörnyezet létrehozása const contextIncognito = await browserChrome.createIncognitoBrowserContext(); // Új oldal létrehozása a böngésző kontextusán keresztül. const pageChrome = vár kontextusIncognito.newPage(); várjon oldalraChrome.goto('https://www.google.com'); //kontextus bezárása használat után várakozás contextIncognito.close();
A BrowserContext osztály gyakran használt eseményeit és metódusait a következő részben ismertetjük.
Bábjátékos BrowserContext osztály – Események:
Az alábbi események böngészőkontextus osztályban érhetők el,
- browserContext.on(targetchanged) – Ez az esemény akkor indul el, ha a cél URL-címe megváltozik a böngésző környezetében.
- browserContext.on(targetcreated) – Ez az esemény a böngészőkontextuson belüli létrehozása után indul el. A módszerek ablak.nyitni és a browserContext.newPage felelősek ezért az eseményért.
- browserContext.on('targetdestroyed') – Ez az esemény akkor indul el, amikor a cél megsemmisül a böngésző környezetében.
Bábjátékos BrowserContext osztály – Módszerek:
Az alábbi módszerek böngészőkontextus osztályban érhetők el,
- browserContext.browser() – Ez a metódus a böngészőkörnyezetben elérhető böngészőobjektumot adja vissza.
- browserContext.clearPermissionOverrides() – Ez a módszer eltávolítja az összes engedély-felülírást a böngésző környezetéből. Az alábbi példa bemutatja, hogyan kell használni ezt a módszert –
const browserContext = browser.defaultBrowserContext();
browserContext.overridePermissions('https://www.google.com', ['clipboard-read']);
browserContext.clearPermissionOverrides();
- browserContext.close() – Ez a módszer a böngésző kontextusának bezárására vagy megsemmisítésére szolgál. A böngészőkörnyezetben elérhető összes böngésző bezárásra kerül.
browserContext.close();
- browserContext.isIncognito() – Ezzel a módszerrel ellenőrizhető, hogy a böngésző „inkognitó” módban jött-e létre. Logikai értéket (true – inkognitó mód vagy false – nem inkognitó mód) ad vissza a böngésző mód alapján. Alapértelmezés szerint minden böngésző „nem inkognitó” módban kerül meghívásra.
const boolIsIncognito = browserContext.isIncognito();
- browserContext.newPage() – Ezzel a módszerrel új oldalt hozhatunk létre ugyanabban a böngészőkörnyezetben.
browserContext.newPage();
- browserContext.overridePermissions(eredet, engedély) – Ezzel a módszerrel adják meg a megadott engedélyt az eredethez, azaz a cél URL-hez. A megadható különböző engedélyek a következők:
- "földrajzi hely"
- „midi-sysex” (rendszer-kizárólagos midi)
- "midi"
- 'nyom'
- 'kamera'
- "értesítések"
- 'mikrofon'
- 'környezeti fényérzékelő'
- 'gyorsulásmérő'
- "háttérszinkron"
- 'giroszkóp'
- "akadálymentesítési események"
- 'vágólap-olvasás'
- 'magnetométer'
- 'vágólap-írás'
- "fizetéskezelő"
Az alábbi példa bemutatja az engedély megadását –
const browserContext = browser.defaultBrowserContext();
várja a browserContext.overridePermissions('https://www.google.com', ['geolocation']);
- browserContext.pages() – Ez a módszer a böngészőben elérhető összes megnyitott oldal listáját adja vissza. A nem látható oldalak nem jelennek meg itt.
const openPageList = browserContext.pages();
- browserContext.targets() – Ez a módszer visszaadja a böngészőben elérhető összes aktív cél listáját. A nem látható oldalak nem jelennek meg itt.
const activeTargetList = browserContext.targets();
- browserContext.waitForTarget(predikátum[, beállítások]) – Ez a módszer arra szolgál, hogy megvárja, amíg egy cél megjelenik, és visszaadja a célobjektumot. Az 'predikátum' argumentum alapvetően egy függvényhívás minden egyes célhoz. Ezenkívül opcionálisan átadhatunk néhány konfigurációs értéket, például az időtúllépést második argumentumként.
várjon oldalraChrome.evaluate(() => window.open('https://www.google.com/')); const newWindowTarget = await browserContext.waitForTarget(target => target.url() === 'https://www.google.com/');
Referencia: Kattints itt hogy többet megtudjon a BrowserContext osztály eseményeiről és metódusairól.
Következtetés:
Ebben a „Puppeteer Browser Class” oktatóanyagban elmagyaráztuk a BrowserFetcher osztályt, a BrowserContext osztályt és a Browser osztályt, amelyek a fontos névtereket (ha vannak), eseményeket (ha vannak) és metódusokat tartalmaznak, amelyeket gyakran használnak a Puppeteer webkaparási technikáiban. példák. A következő cikkben elmagyarázzuk a Page, Frame és Dialog osztályt.