Puppeteer Browser Class-ի հիանալի ուսումնական ուղեցույց (Ձեռնարկ 8)
Puppeteer-ը բաց կոդով հանգույցի js գրադարան է և օգտագործվում է վեբ ավտոմատացման, ինչպես նաև վեբ քերելու գործիք: Puppeteer-ի հետ աշխատելու համար ձեզ անհրաժեշտ է Javascript-ի և HTML DOM կառուցվածքի հիմնական իմացությունը: Puppeteer-ի այս ուսուցողական շարքը բաշխված է ստորև բերված հատվածներում, որոնք ձեզ կհամալրեն անհրաժեշտ փորձով Puppeteer-ի հետ աշխատելու համար:
Տիկնիկավարի ձեռնարկ
Tosca ձեռնարկ #1: Տիկնիկավարի ակնարկ
Tosca Tutorial #2: Puppeteer միջավայրի փոփոխականներ
Tosca Tutorial #3: Puppeteer Web Scraping and Puppeteer Test Automation Overview
Tosca Tutorial #4: Տեղադրեք Puppeteer-ը
Tosca Tutorial #5: Տիկնիկավարի նախագծի նմուշ
Tosca Tutorial #6: Տիկնիկավարների ավտոմատացման փորձարկում
Tosca ձեռնարկ #7: Տիկնիկավարների դասարան
Tosca ձեռնարկ #8: Puppeteer Browser Class
Տոսկա Խնամակալական #9. Տիկնիկավարների էջի դաս
Այս «Puppeteer Browser Class» ձեռնարկում մենք ավելի խորը պատկերացում կունենանք ստորև նշված դասերի մասին, որոնք բաղկացած են կարևոր անվանատարածքներից, իրադարձություններից և այլ սպառիչ մեթոդներից, որոնք անհրաժեշտ են Puppeteer վեբ քերծման տեխնիկայի հետ աշխատելու համար:
Տիկնիկագործ BrowserFetcher դաս
Puppeteer BrowserFetcher Class-ն օգտագործվում է դիտարկիչի տարբեր տարբերակները ներբեռնելու և կառավարելու համար: BrowserFetcher դասը գործում է վերանայման տողի վրա, որը սահմանում է chrome բրաուզերի տարբերակը: Վերանայման համարը կարելի է ստանալ այստեղ. Firefox-ի դեպքում այն ամեն գիշեր ներբեռնում է զննարկիչը՝ հիմնվելով տարբերակի համարի վրա:
Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես ներբեռնել և գործարկել Chrome բրաուզերը օգտագործելով BrowserFetcher դասը:
const browserFetcher = puppeteer.createBrowserFetcher();
const revInfo = await browserFetcher.download('766890');
const browserChrome= await puppeteer.launch({executablePath: revInfo.executablePath})
Հնարավոր չէ միաժամանակ աշխատել BrowserFetcher դասի մեկ այլ օրինակի հետ: BrowserFetcher դասի հաճախ օգտագործվող մեթոդները բացատրվում են հաջորդ բաժիններում:
Տիկնիկագործ BrowserFetcher Class – Մեթոդներ.
Ստորև բերված մեթոդները հասանելի են puppeteer browserfetcher դասում.
browserFetcher.canDownload (վերանայում) – Բրաուզերի վերանայման համարի օգնությամբ այս մեթոդը ստուգում է նշված բրաուզերի առկայությունը որպես վերնագրի հարցման մաս: Մեթոդը վերադարձնում է բուլյան արժեքը (true կամ false)՝ կախված առկայությունից:
const boolVar = browserFetcher.canDownload('766890');
browserFetcher.download (վերանայում[, progressCallback]) – Այս մեթոդը ներբեռնում է Chrome դիտարկիչը՝ օգտագործելով վերանայման համարի փաստարկը: Այստեղ progressCallback-ը կամընտիր արգումենտ է, որը ֆունկցիան կանչում է երկու արգումենտով՝ ներբեռնված բայթ և ընդհանուր բայթ: Այս մեթոդը վերադարձնում է վերանայման տեղեկատվությունը որպես խոստման օբյեկտ:
const revInfo = browserFetcher.download('766890');
browserFetcher.host() – Այն վերադարձնում է հոսթի անունը, որն օգտագործվում է բրաուզերի ներբեռնման համար:
const hostName = browserFetcher.host();
browserFetcher.localRevisions() – Այն վերադարձնում է բոլոր վերանայումների ցանկը, որոնք հասանելի են տեղական համակարգում:
const revList = browserFetcher.localRevisions();
browserFetcher.platform() – Այն վերադարձնում է հոսթի պլատֆորմի անունը, որը կլինի Mac-ի, Linux-ի, win32-ի կամ win64-ի որևէ մեկը:
const platformName = browserFetcher.platform();
browserFetcher.product() – Այն վերադարձնում է դիտարկիչի անունը, որը կլինի կամ chrome կամ firefox
const productName = browserFetcher.product();
browserFetcher.remove(վերանայում) – Այս մեթոդը օգտագործվում է ընթացիկ արտադրանքի/բրաուզերի համար նշված վերանայումը հեռացնելու համար: Այն վերադարձնում է խոստման օբյեկտը, որը լուծվում է գործընթացի ավարտից հետո:
const revInfo = browserFetcher.remove('766890');
browserFetcher.revisionInfo(revision) – Այն կվերադարձնի վերանայման տեղեկատվության վրա գտնվող օբյեկտ, որը ներառում է վերանայում, folderPath, executablePath, url, տեղական և արտադրանք:
const revInfo = browserFetcher.revisionInfo('766890');
Հղում Սեղմել այստեղ BrowserFetcher Class մեթոդների մասին ավելին իմանալու համար:
Տիկնիկագործ Բրաուզերի դաս
Puppeteer Browser դասը ստեղծվում է, երբ տիկնիկավարը գործարկել կամ միացրել է զննարկիչը՝ օգտագործելով տիկնիկավար.գործարկել or տիկնիկավար.միացնել մեթոդները:
Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես ստեղծել «Browser» դասը և «Էջը»՝ օգտագործելով դիտարկիչի հղումը:
const puppeteer = require('puppeteer');
(async () => {
const browserChrome = await puppeteer.launch();
const pageChrome = await browserChrome.newPage();
await pageChrome.goto('https://www.google.com');
await browserChrome.close();
})();
Բրաուզերի դասի հաճախ օգտագործվող իրադարձությունները և մեթոդները բացատրվում են հաջորդ բաժնում:
Տիկնիկագործ Բրաուզերի դաս – Իրադարձություններ.
Ստորև նշված իրադարձությունները հասանելի են բրաուզերի դասում,
- browser.on («անջատված») – Այս իրադարձությունը գործարկվում է, երբ զննարկիչը փակ է/խափանված է կամ բրաուզեր.անջատել մեթոդը կոչվում է.
- browser.on ('targettchanged') – Այս իրադարձությունը գործարկվում է, երբ թիրախի url-ը փոխվել է:
- browser.on ('targetcreated') – Այս իրադարձությունը գործարկվում է, երբ նոր էջը բացվում է նոր ներդիրում կամ պատուհանում՝ մեթոդով browser.newPage or պատուհան.բաց.
- browser.on ('targetdestroyed') – Այս իրադարձությունը սկսվում է, երբ թիրախը ոչնչացվում է, այսինքն՝ էջը փակվում է:
Տիկնիկագործ Բրաուզերի դաս - մեթոդներ.
Ստորև բերված մեթոդները հասանելի են բրաուզերի դասում,
- browser.browserContexts() – Այն վերադարձնում է բրաուզերի բոլոր համատեքստերի ցանկը: Նոր գործարկված բրաուզերի համար այս մեթոդը կվերադարձնի մեկ BrowserContext օրինակը:
- browser.close() – Այս մեթոդն օգտագործվում է քրոմ-բրաուզերի բոլոր բաց էջերը փակելու համար:
await browser.close();
- browser.createIncognitoBrowserContext() – Այն ստեղծում/վերադարձնում է զննարկչի ինկոգնիտո համատեքստը, որը երբեք չի կիսի թխուկները կամ քեշը որևէ այլ դիտարկիչի համատեքստի հետ: Ստորև բերված օրինակում վեբ էջը (google) կբացվի ինկոգնիտո ռեժիմով:
(ասինկ () => {
const chromeBrowser = սպասում puppeteer.launch();
// Ստեղծեք նոր ինկոգնիտո դիտարկիչի համատեքստ:
const համատեքստ = սպասում chromeBrowser.createIncognitoBrowserContext();
const pageChrome = await context.newPage();
սպասել էջChrome.goto ('https://www.google.com');
}) ();
- browser.defaultBrowserContext() – Այն վերադարձնում է լռելյայն դիտարկիչի համատեքստը, որը չի կարող ոչնչացվել կամ փակվել:
- browser.disconnect() – Դա կանջատի զննարկիչը տիկնիկավարից: Բայց այս դեպքում զննարկիչը կշարունակի աշխատել:
- browser.isConnected() – Այս մեթոդը ստուգում է՝ արդյոք դիտարկիչը միացված է, թե ոչ: Չեկի հիման վրա այն կվերադարձնի բուլյան արժեքներ:
const boolFlag = await browser.isConnected();
- browser.newPage() – Այս մեթոդը կստեղծի նոր էջ և կվերադարձնի էջի օրինակը:
const page = await browser.newPage();
- browser.pages() – Այս մեթոդը վերադարձնում է բոլոր էջերի ցանկը, որոնք ներկայումս բաց վիճակում են:
const pageList = await browser.pages();
- browser.process() – Այս մեթոդը վերադարձնում է ստեղծված բրաուզերի գործընթացը: Եթե զննարկիչը ստեղծվել է օգտագործելով բրաուզեր.միացնել մեթոդը, և այն կվերադարձնի զրոյական արժեք:
- browser.target() – Այս մեթոդը վերադարձնում է բրաուզերի հետ կապված թիրախը:
const target = սպասել browser.target();
- browser.targets() – Այն վերադարձնում է բրաուզերի ներսում բոլոր ակտիվ թիրախների ցանկը:
const targetList = await browser.targets();
- browser.userAgent() – Այն վերադարձնում է բրաուզերի սկզբնական գործակալի մասին խոստման օբյեկտը:
- browser.version() – Այն վերադարձնում է բրաուզերի տարբերակը «HeadlessChrome/xx» ձևաչափով.x.xxxx.x' անգլուխ քրոմի համար և «Chrome/xx»:.x.xxxx.x' անգլուխ քրոմի համար: Ձևաչափը կարող է փոխվել ապագա թողարկման ժամանակ:
- browser.waitForTarget (նախադրյալ[, ընտրանքներ]) – Այն կփնտրի բրաուզերի բոլոր համատեքստերում և կսպասի թիրախին:
await pageChrome.evaluate(() => window.open('https://lambdageeks.com/'));
const newWindowTarget = սպասել browser.waitForTarget(target => target.url() === 'https://lambdageeks.com/');
- browser.wsEndpoint() – Այն վերադարձնում է բրաուզերի վեբ վարդակից url-ը:
const wsUrl = await browser.wsEndPoint();
Հղում Սեղմել այստեղ Բրաուզերի դասի իրադարձությունների և մեթոդների մասին ավելին իմանալու համար:
Տիկնիկագործ BrowserContext դաս
BrowserContext դասը օգնում է գործարկել բրաուզերի բազմաթիվ օրինակներ: Բրաուզերի օրինակը գործարկելուց հետո, լռելյայնորեն, օգտագործվում է մեկ BrowserContext: Այն բրաուզեր Chrome.newPage() մեթոդը էջ է ստեղծում լռելյայն BrowserContext դասի օբյեկտում: Եթե վեբ էջը կանչում է մեկ այլ էջ, ապա նոր էջը պետք է պատկանի մայր էջի բրաուզերի համատեքստին: Այստեղ նոր էջը կարող է ստեղծվել՝ օգտագործելով որ window.open() մեթոդ է.
Ստորև բերված օրինակում Puppeteer-ը հնարավորություն ունի ստեղծել դիտարկիչի համատեքստ «ինկոգնիտո» ռեժիմում: Բրաուզերի «ինկոգնիտո» համատեքստը որևէ տվյալ չի գրում պահեստում:
// Incognito browser context creation
const contextIncognito = await browserChrome.createIncognitoBrowserContext();
// New page creation through the browser context.
const pageChrome = await contextIncognito.newPage();
await pageChrome.goto('https://www.google.com');
//close context after use
await contextIncognito.close();
BrowserContext դասի հաճախ օգտագործվող իրադարձությունները և մեթոդները բացատրվում են հաջորդ բաժնում:
Տիկնիկագործ BrowserContext Class – Իրադարձություններ.
Ստորև նշված իրադարձությունները հասանելի են բրաուզերի համատեքստի դասում,
- browserContext.on (նպատակային փոփոխված) – Այս իրադարձությունը գործարկվում է, երբ բրաուզերի համատեքստում թիրախի url-ը փոխվել է:
- browserContext.on (ստեղծված թիրախ) – Այս իրադարձությունը գործարկվում է բրաուզերի ներսում համատեքստ ստեղծելուց հետո: Մեթոդները պատուհան.բաց և browserContext.newPage պատասխանատու են այս իրադարձության համար:
- browserContext.on («թիրախը ոչնչացված է») – Այս իրադարձությունը սկսվում է, երբ թիրախը ոչնչացվում է դիտարկիչի համատեքստում:
Տիկնիկագործ BrowserContext Class – Մեթոդներ.
Ստորև բերված մեթոդները հասանելի են բրաուզերի համատեքստային դասում,
- browserContext.browser() – Այս մեթոդը վերադարձնում է դիտարկիչի օբյեկտը, որը հասանելի է դիտարկիչի համատեքստում:
- browserContext.clearPermissionOverrides() – Այս մեթոդը հեռացնում է բոլոր թույլտվությունների անտեսումները բրաուզերի համատեքստից: Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես օգտագործել այս մեթոդը.
const browserContext = browser.defaultBrowserContext();
browserContext.overridePermissions ('https://www.google.com', ['clipboard-read']);
browserContext.clearPermissionOverrides();
- browserContext.close() – Այս մեթոդն օգտագործվում է դիտարկիչի համատեքստը փակելու կամ ոչնչացնելու համար: Բրաուզերի համատեքստում հասանելի բոլոր բրաուզերները կփակվեն:
browserContext.close();
- browserContext.isIncognito() – Այս մեթոդը օգտագործվում է ստուգելու համար՝ արդյոք զննարկիչը ստեղծվել է «ինկոգնիտո» ռեժիմում, թե ոչ: Այն վերադարձնում է բուլյան արժեք (true – ինկոգնիտո ռեժիմ կամ false – ոչ ինկոգնիտո ռեժիմ)՝ հիմնված բրաուզերի ռեժիմի վրա: Լռելյայնորեն, ցանկացած բրաուզեր կանչվում է «ոչ ինկոգնիտո» ռեժիմում:
const boolIsIncognito = browserContext.isIncognito();
- browserContext.newPage() – Այս մեթոդը օգտագործվում է նույն բրաուզերի համատեքստում նոր էջ ստեղծելու համար:
browserContext.newPage();
- browserContext.overridePermissions (ծագում, թույլտվություն) – Այս մեթոդը օգտագործվում է սկզբնաղբյուրին, այսինքն՝ թիրախային url-ին նշված թույլտվությունը տրամադրելու համար: Տարբեր թույլտվություններ, որոնք հասանելի են տրամադրելու համար.
- «աշխարհագրական տեղաբաշխում»
- «midi-sysex» (համակարգի բացառիկ midi)
- «միդի»
- «հրել»
- «տեսախցիկ»
- «ծանուցումներ»
- «խոսափող»
- «միջավայրի լույսի սենսոր»
- «արագացուցիչ»
- «ֆոնային համաժամացում»
- «գիրոսկոպ»
- «մատչելիություն-միջոցառումներ»
- «clipboard-read»
- «մագնիսաչափ»
- «clipboard-գրել»
- «վճարման կառավարիչ»
Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես կարելի է թույլտվություն տալ.
const browserContext = browser.defaultBrowserContext();
սպասել browserContext.overridePermissions ('https://www.google.com', ['geolocation']);
- browserContext.pages() – Այս մեթոդը վերադարձնում է բրաուզերի համատեքստում հասանելի բոլոր բաց էջերի ցանկը: Ոչ մի անտեսանելի էջ այստեղ չի նշվի:
const openPageList = browserContext.pages();
- browserContext.targets() – Այս մեթոդը վերադարձնում է բրաուզերի համատեքստում առկա բոլոր ակտիվ թիրախների ցանկը: Ոչ մի անտեսանելի էջ այստեղ չի նշվի:
const activeTargetList = browserContext.targets();
- browserContext.waitForTarget (նախադրյալ[, ընտրանքներ]) – Այս մեթոդը օգտագործվում է սպասելու թիրախի հայտնվելուն և թիրախային օբյեկտը վերադարձնելու համար: «նախադրյալ» փաստարկը հիմնականում ֆունկցիայի կանչ է թիրախներից յուրաքանչյուրի համար: Բացի այդ, ըստ ցանկության, մենք կարող ենք փոխանցել որոշ կազմաձևման արժեքներ, ինչպիսիք են ժամանակի ավարտը որպես երկրորդ արգումենտ:
await pageChrome.evaluate(() => window.open('https://www.google.com/'));
const newWindowTarget = await browserContext.waitForTarget(target => target.url() === 'https://www.google.com/');
Հղում Սեղմել այստեղ BrowserContext դասի իրադարձությունների և մեթոդների մասին ավելին կարդալու համար:
Եզրակացություն.
Այս «Puppeteer Browser Class» ձեռնարկում մենք բացատրել ենք BrowserFetcher դասը, BrowserContext դասը և Browser դասը, որը ներառում է կարևոր անվանատարածքները (եթե այդպիսիք կան), իրադարձությունները (եթե այդպիսիք կան), և մեթոդները, որոնք հաճախ օգտագործվում են Puppeteer վեբ քերծման տեխնիկայում: օրինակներ. Հաջորդ հոդվածում մենք կբացատրենք Page, Frame և Dialog դասերը: