Puppeteer: рдИрд╡реЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдлрд╝реНрд░реЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╛рджрд╛ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЬрдире░ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: puppeteer/puppeteer

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ:

  • рдХрдардкреБрддрд▓реА рд╕рдВрд╕реНрдХрд░рдг: 0.13.0
  • рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо / рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг: рдбреЙрдХрд░, рд▓рд┐рдирдХреНрд╕, рд╕реЗрдВрдЯ рдУрдПрд╕ 7
  • рдпреВрдЖрд░рдПрд▓ (рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ):
  • Node.js рд╕рдВрд╕реНрдХрд░рдг: 7.10.1

рдХреМрди рд╕рд╛ рдХрджрдо рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рджреЗрдЧрд╛?

рдЗрд╕ рдХреЛрдб рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ:

const puppeteer = require('puppeteer');

puppeteer.launch({args: ['--no-sandbox']}).then(async browser => {
  const page = await browser.newPage();  
  page.on('frameattached', async frame => {
    console.log('Frame found: ' + frame);
    console.log('What kind of object is this? ... ' + frame.constructor.name);
    const result = await frame.title();
    console.log('Result: ' + result);
  });
  await page.goto('https://www.google.com/chrome/browser/canary.html');
  await browser.close();
});

рдкрд░рд┐рдгрд╛рдо рдХреА рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ?

рдХрд┐ рдЗрд╕реЗ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 9): TypeError: Cannot read property 'evaluate' of null

рдореБрдЭреЗ рдлрд╝реНрд░реЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред рдЧреИрд░-рд╡рд╛рджрд╛-рдЖрдзрд╛рд░рд┐рдд рддрд░реАрдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@yujiosaka рдмрд╕ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрдЧ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ 0.13.0 . рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ

рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдореЗрд░реЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реБрдЖ

  • рдХрдардкреБрддрд▓реА рд╕рдВрд╕реНрдХрд░рдг: 0.13.0
  • рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо / рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг: рдореИрдХ рдУрдПрд╕
  • рдпреВрдЖрд░рдПрд▓ (рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ):
  • Node.js рд╕рдВрд╕реНрдХрд░рдг: 8.9.1

рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдкрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ (рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рдЧреМрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)

Frame found: [object Object]
What kind of object is this? ... Frame
Frame found: [object Object]
What kind of object is this? ... Frame
Result:
Result:
Frame found: [object Object]
What kind of object is this? ... Frame
Frame found: [object Object]
What kind of object is this? ... Frame
Result:
Result:

@pyper

рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп puppeteer@next рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

@yujiosaka рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдИ рдЧрдИ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рдлреНрд░реЗрдо рдореЗрдВ рдЕрднреА рддрдХ рд╢реАрд░реНрд╖рдХ рдирд╣реАрдВ рдереЗред рдпрд╣реА рд╣реИ, рдЬрдм рдлреНрд░реЗрдо рд╕рдВрд▓рдЧреНрди рдкреГрд╖реНрда рдореЗрдВ HTML рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрдм рддрдХ рд▓реЛрдб рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╢реАрд░реНрд╖рдХ рдЦрд╛рд▓реА рдерд╛ред рдореИрдВ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ @next рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ ред рдзрдиреНрдпрд╡рд╛рдж рдпрд╛рд░!

@yujiosaka рдмрд╕ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрдЧ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ 0.13.0 . рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ

рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕