Ukuhlola Okuzenzakalelayo Nge-Puppeteer kanye Ne-Edge: Umhlahlandlela Ophelele Wendlela Yokwenza

Isibuyekezo sokugcina: 26/08/2025
Author: Isaka
  • I-Puppeteer-core ilawula i-Edge nge-CDP: ukufakwa okungasindi kanye ibhuthini ngqo kusuka kokusebenzisekayo.
  • Imikhuba emihle kakhulu: I-Mocha/Chai, Imodeli Yento Yekhasi, ukulinda okusobala nokuthwebula.
  • Ukulungisa iphutha ne-CI: okungenakhanda/igobolondo, abalaleli benethiwekhi, ukulondoloza isikhashana, nokuhambisana.
  • I-Edge Ecosystem: I-DevTools, i-Playwright, i-WebDriver, i-webhint ne-Origin Testing.

Ukuhlola okuzenzakalelayo nge-Puppeteer ne-Edge

Yenza ngokuzenzakalela ukuhlola kokuphela ukuya I-Microsoft Edge Nge-Puppeteer ukubheja okuphephile namuhla: I-Edge isekelwe ku-Chromium futhi i-Puppeteer ikhuluma ulimi olufanayo (i-CDP), ngakho ilingana njengegilavu ​​yokuhlola okusheshayo, okuthembekile ngokulawulwa kwesiphequluli okunohlamvu oluhle.

Kulo mhlahlandlela sihlukanisa izinwele nakho konke okudingayo: ukufakwa, umehluko phakathi kwe-puppeteer ne-puppeteer-core, ukuqala i-Edge nge-interface nangaphandle kwayo, ukutholwa okusebenzisekayo, izibonelo zamakhodi (i-Mocha/Chai, Imodeli Yento Yekhasi, amafomu, izithombe-skrini), tricks ukulungisa iphutha, ukuhlanganiswa kwe-CI/CD kanye namathuluzi e-ecosystem (DevTools Protocol, Playwright, WebDriver, webhint, Source Testing), kanye namanothi asongayo afana ne-Puppeteer‑Sharp noma iphakheji ye-Dart.

Iyini i-Puppeteer futhi kungani ifanelana ne-Microsoft Edge?

I-Puppeteer yilabhulali ye-Node.js elawula iziphequluli ezisekelwe ku-Chromium (i-Chrome ne-Edge) isebenzisa i-Chrome DevTools Protocol (CDP). Ngokuzenzakalelayo, iqala ngemodi engenamakhanda (ayikho i-UI), kodwa ungabonisa iwindi ukuze ubone ukubulawa bukhoma.

U-Edge ne-Puppeteer basebenzisana ngesandla Ngoba u-Edge wabelana ngesisekelo se-Chromium. Ngakho-ke, nge-puppeteer-core, ungakhomba ukufakwa okukhona kwe-Microsoft Edge, usebenzisa injini yayo yomhlaba wangempela futhi ugweme ukulanda i-Chromium eyengeziwe uma usunayo i-Edge efakiwe.

Uzoyisebenzisela ini nsuku zonke? Ukuhlolwa kwe-GUI, ukukhuhla kokuqukethwe okunamandla, amamethrikhi okusebenza, ukukhiqizwa kwe-PDF/isithombe-skrini, nokuqinisekiswa kokuhlehla okubonakalayo—konke nge-API esezingeni eliphezulu, ezinzile kakhulu.

Ukuhlolwa komphetho okuzenzakalelayo nge-Puppeteer

Ukufakwa: i-puppeteer vs puppeteer-core

Kukhona ama-flavour amabili okufanele kuhlukaniswe: i-puppeteer (iphakheji egcwele elanda i-Chromium) kanye ne-puppeteer-core (i-lightweight, ayilandi isiphequluli futhi ixhuma kokusebenzisekayo okukhona njenge-Edge).

Ukufakwa okunconyiwe kwe-Edge Uma usuvele unaso isiphequluli: sebenzisa i-puppeteer-core ne-npm noma intambo ukuze ulondoloze i-ascargas futhi usebenze ngqo ku-Edge yangakini.

Imiyalo ukufakwa okusheshayo ngomongo: npm i-puppeteer-core noma intambo yengeza i-puppeteer-core, qinisekisa ukuthi i-Node ibuyekeziwe (izinkombandlela ezindala zisho i-v8.9+ kanye nokusekelwa kwe-async/ukulinda kusukela ku-v7.6; kulezi zinsuku i-v14+ iyanconywa).

Qala i-Microsoft Edge ngesinyathelo ngesinyathelo se-puppeteer-core

Ukulandelana okujwayelekile Kumayelana nokudala isibonelo sesiphequluli, ukuvula ikhasi elisha, ukuya ku-URL, nokwenza izenzo (ukuchofoza, ukuthayipha, ukuthwebula). Nge-Edge, udinga nje ukucacisa okulungile okusebenzisekayo.

Isibonelo esincane sokusebenza evula i-Edge, ivakashela ikhasi, futhi igcine isithombe-skrini. Shintsha indlela uma uthanda ukuyithola ngokohlelo (bona isigaba esilandelayo).

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe',
    headless: true
  });
  const page = await browser.newPage();
  await page.goto('https://www.microsoft.com/edge/download/insider');
  await page.screenshot({ path: 'example.png' });
  await browser.close();
})();

Uma usebenzisa i-macOS noma Linux, setha i-ExecutablePath endaweni ye-Edge ohlelweni lwakho (ngokwesibonelo, ku-MacOS Canary kungase kube /Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary).

  Izimo ezingokoqobo zemodi ye-hexadecimal yesibali se-Windows

Thola indlela esebenzisekayo ye-Edge (okwenziwa ngesandla kanye nohlelo)

Indlela elula eyenziwe ngesandla: Thayipha i-edge://version kubha yekheli le-Edge bese ukopisha indlela esebenzisekayo evela kulelo khasi.

Indlela yohlelo ku-Node: Sebenzisa iphakheji yezindlela ezisemaphethelweni ukuze ubuyise indlela elungile ku-OS ngayinye futhi ugweme amanani akhethekile wokubhala amakhodi kanzima.

const edgePaths = require('edge-paths');
const EDGE_PATH = edgePaths.getEdgePath();

// Luego úsalo en el launch
const puppeteer = require('puppeteer-core');
(async () => {
  const browser = await puppeteer.launch({ executablePath: EDGE_PATH });
  const page = await browser.newPage();
  await page.goto('https://www.microsoft.com/edge/download/insider');
  await page.screenshot({ path: 'edge-insider.png' });
  await browser.close();
})();

Inzuzo yale ndlela cross-platform: ipayipi lakho noma ithimba lakho akudingeki lihlele indlela ngesandla Windows, i-macOS noma i-Linux.

Izindlela zokwenza: ezingenakhanda futhi zixhumene

I-Headless iyashesha futhi ilula, ilungele i-CI/CD. Ungakwazi ukuguqula i-UI eyinhloko ukuze ubone ukuthi kwenzakalani esinyathelweni ngasinye, noma uvule i-slowMo ukuze ulungise ukusebenzisana.

Okusha kuzinguqulo zesimanje: I-Puppeteer ingasebenzisa imodi engenakhanda esekelwe ku-chrome-headless-shell ngokusetha i-headless: 'igobolondo', elithuthukisa ukusebenza ezindaweni ezithile.

const browser = await puppeteer.launch({
  executablePath: EDGE_PATH,
  headless: 'shell', // o true/false según necesites
  args: ['--no-sandbox'] // útil en contenedores
});

Gcina engqondweni ukuhambisana: Eminye imisebenzi efana nokuphrinta ku PDF ingase idinge i-headless yangempela ezinguqulweni ezithile; hlola ipayipi lakho.

I-Ecosystem yamathuluzi ahlobene ku-Edge

  • Iphrothokholi ye-DevTools: isisekelo sePuppeteer. Ikuvumela ukuthi usebenzise ithuluzi, uhlole, ulungise iphutha, kanye neziphequluli zephrofayela, okuhlanganisa i-Microsoft Edge, ngokulingana kwe-API neChromium.
  • Izilingo Zomsuka: indlela yokuhlola ama-API okuhlola kumasayithi wangempela isikhathi esilinganiselwe, ihlinzeka ngempendulo emaqenjini asezingeni kanye nonjiniyela beziphequluli.
  • Umbhali wemidlalo: Enye indlela yezinga eliphezulu enokwesekwa kweziphequluli eziningi nge-API eyodwa, ethembekile, nesheshayo, futhi ehambisana ne-Edge. Iwusizo uma udinga ukumboza iFirefox neWebKit ngokuhambisana.
  • I-WebDriver: Izinga lokuzenzela iziphequluli ngokulingisa ukusebenzisana kwabasebenzisi bomhlaba wangempela (amawindi, amathebhu, imicimbi ye-OS). Kuwusizo uma ufuna isiphequluli esiphambanayo kanye nokufakwa kolimi oluhlukene.
  • webhint kanye nesandiso sayo se-VS Code: Indlela engcono kakhulu yokuhlanganisa ehlonza ukufinyeleleka okuvamile, ukusebenza, ukusebenzisana kwesiphequluli esiphambene, i-PWA, nezinkinga zokuphepha, futhi ingahlanganiswa ekuhambeni kwakho komsebenzi.

I-Puppeteer vs Selenium: Lapho Ungayikhetha Ngayinye

I-puppeteer ikhanya ngesivinini nokulawula kuziphequluli ze-Chromium, ene-API elula yamaqembu e-JS/Node nokunemba okuphezulu kwesenzo, ilungele ukuhlola okungenakhanda noma ukuklwebheka okuthuthukile.

I-Selenium iletha ububanzi (iziphequluli nezilimi): uma inhloso yakho kuwukuqinisekisa ku-Chrome, Firefox, Safari kanye ne-Edge kanye/noma izinhlelo zeqembu lakho ku-Java, C#, Python noma i-Ruby, ukufakwa kwe-Selenium kanye ne-ecosystem kusalokhu kuyisiqinisekiso.

Futhi ku-Edge ngokuqondile? Uma uqondise i-Edge/Chromium kuphela, iPuppeteer iqondile, iyashesha, futhi izinzile kakhulu; uma i-matrix yakho yokuhambisana idinga iziphequluli ezengeziwe, cabangela i-Selenium noma i-Playwright.

Imikhuba ehamba phambili yokuhlola nge-Mocha/Chai kanye Nemodeli Yento Yekhasi

U-Mocha njengomgijimi wokuhlola kanye no-Chai njengomtapo wolwazi wokugomela bayifanele ngokuphelele i-Puppeteer. Usizo ngaphambiKolunye/NgemvaNgalunye, vula/uvale isiphequluli futhi ugcine ukuhlola kukodwa.

  Iyiphi indlela engcono kakhulu yokunakekela ibhethri lami le-iPhone?

Imodeli Yento Yekhasi (POM) Yakha iphrojekthi ibe amakilasi ekhasini ngalinye, uhlanganise abakhethi kanye nezenzo. Lokhu kuthuthukisa ukugcinwa, ukusebenziseka kabusha, kanye nokufundeka kokuhlolwa.

// pages/HomePage.js
class HomePage {
  constructor(page) { this.page = page; }
  async title() { return this.page.title(); }
  async search(word) {
    await this.page.type('input[id=search_form_input_homepage]', word);
    await this.page.click('input[type="submit"]');
  }
}
module.exports = HomePage;

// pages/ResultsPage.js
class ResultsPage {
  constructor(page) { this.page = page; }
  async linksCount() {
    await this.page.waitForSelector('h2 a');
    return await this.page.$$eval('h2 a', as => as.length);
  }
}
module.exports = ResultsPage;

Isampula yokuhlola nge-DuckDuckGo okuqinisekisa isihloko futhi usesho lukhiqiza imiphumela, okubonisa iphethini ye-POM isebenza.

const puppeteer = require('puppeteer');
const { expect } = require('chai');
const HomePage = require('./pages/HomePage');
const ResultsPage = require('./pages/ResultsPage');

describe('Búsqueda en DuckDuckGo con POM', () => {
  let browser, page;
  beforeEach(async () => {
    browser = await puppeteer.launch();
    page = await browser.newPage();
    await page.goto('https://duckduckgo.com');
  });
  afterEach(async () => { await browser.close(); });

  it('muestra el título esperado', async () => {
    const home = new HomePage(page);
    expect(await home.title()).to.include('DuckDuckGo');
  });

  it('devuelve resultados al buscar', async () => {
    const home = new HomePage(page);
    await home.search('puppeteer');
    const results = new ResultsPage(page);
    expect(await results.linksCount()).to.be.greaterThan(0);
  });
});

Ithiphu ewusizo- Faka phakathi abakhethiwe bakho emakilasini e-POM futhi ugweme ukuziphindaphinda ezivivinyweni ukuze kube lula ukwenza kabusha lapho i-DOM ishintsha.

Ukuzenzakalela kwamafomu, ukuthwebula kanye nama-PDF

Gcwalisa okokufaka, cindezela izinkinobho futhi uhlole imilayezo Isinkwa nebhotela. Ungathatha izithombe-skrini ngezinyathelo ezibalulekile futhi uqinisekise imibhalo ye-DOM ukuze uqinisekise ukugeleza okuphelele.

Isibonelo esikhuthazwe yi-Angular SPA ngokuqinisekiswa kwefomu, ukuzulazula nezithombe-skrini phakathi kwezikrini:

await page.goto('https://angular-6-registration-login-example.stackblitz.io/register');
await page.click('a.btn.btn-link'); // Cancel
await page.click('a.btn.btn-link'); // Register
await page.click('button.btn.btn-primary'); // Validaciones vacías
await page.screenshot({ path: 'form-feedback.png' });

await page.type('input[formcontrolname="firstName"]', 'Monitor');
await page.type('input[formcontrolname="lastName"]', 'Pruebas');
await page.type('input[formcontrolname="username"]', 'pruebas');
await page.type('input[formcontrolname="password"]', 'MISO4208');
await page.click('button.btn.btn-primary');
await page.waitForSelector('div.alert.alert-success');

await page.type('input[formcontrolname="username"]', 'pruebas');
await page.type('input[formcontrolname="password"]', 'MISO4208');
await page.click('button.btn.btn-primary');
await page.waitForSelector('h1');
await page.screenshot({ path: 'after-login.png' });

Khiqiza i-PDF Iqondile nekhasi.pdf; luwusizo emibikweni noma ebufakazini obubonakalayo bombono othile osendleleni.

Ukulungisa iphutha kanye nokusebenza: Amaqhinga Onga Isikhathi

Sebenzisa waitForSelector ukuvumelanisa ne-DOM futhi ugweme ukulala okungenangqondo. Engeza amalogi nabalaleli benethiwekhi ukuze uhlole ukuhluleka kokulayisha noma amaphutha angu-404/500.

page.on('requestfailed', req => {
  console.error('Fallo de solicitud:', req.url(), req.failure()?.errorText);
});

await page.waitForSelector('#mi-elemento', { timeout: 10000 });

Ukulungisa amaphutha okubukwayo: guqula ungabi nakhanda: amanga futhi kancaneMo ukuze uthole imiyalelo yesinyathelo ngesinyathelo; kokungenakhanda kwesimanje, zama i-headless: 'igobolondo' ukuze uthuthukise ukuzinza nokusebenza ku-CI.

Vimba izinsiza ezingadingekile (izithombe, amafonti) uma ukhathalela kuphela i-DOM/umbhalo ukuze unciphise ukusetshenziswa kwamandla futhi usheshise ukuhlolwa kokuklwebha.

Ukuhlanganiswa ku-CI/CD kanye nokubulawa ezitsheni

Ku-CI kulula ukusebenzisa i-headless ne-args njengoba -no-sandbox ezindaweni izimpande noma iziqukathi. Gcina i-Node isesikhathini futhi ucabange ukusebenzisa kabusha i-Chromium/Edge yesistimu ukuze ugweme ukulandwa kwesakhiwo ngasinye.

Amasu amapayipi asebenza kahle: ifanisa ama-suites, i-cache node_modules kanye nefolda yesiphequluli, futhi ihlukanisa ukuhlolwa kwentuthu okusheshayo kusukela ekuhlolweni okunzima kakhulu kokuphela kuya ekupheleni.

Izinsizakalo zefu Abagijimi bohlobo lwe-BrowserStack bangasiza ngamatric esiphequluli esiphambene; ku-Edge/Chromium ehlanzekile, i-Puppeteer kubagijimi be-Linux iyashesha futhi izinzile.

  Vimbela Umuntu Endabeni Yakho Ye-Snapchat

Ukuqapha namamethrikhi phakathi nokuhlolwa

Uma udinga ukubonwa, hlanganisa amamojula aqoqa amamethrikhi okusebenza kwesiphequluli (amanodi e-DOM, izikhathi zokubala kabusha zesitayela, ubude beskripthi/umsebenzi, inqwaba ye-JS namakhodi e-HTTP) futhi uwathumele kuplathifomu yakho ye-APM.

Amathuluzi afana ne-webhint kanye nokusebenza kuma-DevTools asiza ekutholeni izingqinamba, amathuba okuthuthukisa, nezinkinga zokusebenzisana ezingahle zephule uhlolo lwakho ngezikhathi ezithile.

I-Beyond Node: Ama-Wrappers kanye Nokuhambisana Okunwetshiwe

I-Puppeteer-Sharp (C#) ibonise ukuhambisana okuphezulu ne-Edge ngenxa yemvelo yayo esekelwe ku-Chromium; umuzwa womhlaba wangempela ubonisa ukuthi uhlolo oluningi luyaphasa ngokulungiswa okuncane.

Iphakethe le-Dart nayo ikhona, iwusizo uma usebenza naleyo ecosystem: ungakwazi ukuqalisa isiphequluli, uzulazule, futhi wenze ngokuzenzakalelayo izenzo nge-API ejwayelekile.

Ukwandisa Ukuhambisana: Izinguqulo zakamuva ze-Puppeteer zengeze ukusekelwa kwezinye iziphequluli ezifana ne-Firefox futhi zidlulela kumazinga afana ne-WebDriver BiDi, ehlanganisa okuhamba phambili kwe-CDP ne-WebDriver yakudala.

Amanye amathuluzi nezindlela zokuhlola onqenqemeni

Umbhali wemidlalo Inikeza i-automation ye-cross-browser nge-API eyodwa; uma udinga iFirefox/WebKit ngaphezu kwe-Edge, ikusindisa ubuhlungu bekhanda nge-syntax yesimanje, eqinile.

I-WebDriver Ihlala ibalulekile ezimweni zebhizinisi zezilimi eziningi futhi inikeza ukuhlanganiswa okuqinile kuzinhlaka ezikhona, kanye nezinzuzo ekuphathweni kwamafasitela kanye nemicimbi yabasebenzisi.

I-DevTools Protocol ngokuqondileUma udinga izinsimbi zohlamvu oluhle kakhulu (ukulandelelwa, ukungenelela kwenethiwekhi okuthuthukisiwe, ukumbozwa), ungahlanganisa i-CDP ne-Puppeteer ukuze uthole ukuxilonga okusezingeni eliphansi.

Amaresiphi awusizo ane-Edge: ukusuka kuqanda ukuya enanini

Isithombe-skrini esinosayizi ogcwele kusuka ekhasini elibalulekile ukuze ubuyekeze izinguquko ze-UI ezicelweni zokudonsa noma wenze izivivinyo zokuhlehla ezibukwayo.

await page.goto('https://tu-sitio');
await page.screenshot({ path: 'full.png', fullPage: true });

Ukulinda okuhlakaniphile Ukuhlanganisa ukuphequlula nokungenzi lutho kwenethiwekhi kwezinhlelo zokusebenza ezinzima ze-SPA ezilayisha izinsiza ze-cascade.

await page.goto('https://app.tu-sitio', { waitUntil: 'networkidle0' });

Ukukhishwa kwedatha enamandla nge-$$eval futhi uhlole ukuze uguqule i-DOM ibe izakhiwo zedatha ezilungele i-backend yakho.

const items = await page.$$eval('.card', cs => cs.map(c => ({
  title: c.querySelector('h2')?.textContent?.trim() || '',
  link: c.querySelector('a')?.href || ''
})));

Ukulawula iphutha eliqinile ngokuzama/ukubamba futhi izingodo kucetshiswe ukuqonda ukwehluleka ngezikhathi ezithile futhi kunciphise ukucasuka.

try {
  await page.waitForSelector('#checkout', { timeout: 8000 });
} catch (e) {
  console.error('Elemento checkout no apareció a tiempo');
  await page.screenshot({ path: 'timeout-checkout.png' });
  throw e;
}

Lolu hambo lukushiya ulungile ukusuka kokuthiyori uye kugugu: ukuhlolwa okuthembekile, okusheshayo, nokulondolozekayo ku-Microsoft Edge ngokungqubuzana okuncane.