0

With nodejs and puppeteer it looks like:

const puppeteer = require('puppeteer');              

const browser = await puppeteer.launch();             
const page1 = await browser.newPage();                
await page1.goto('https://google.com');                   

await page1.waitForSelector('#fsl > a:nth-child(4)'); 
const link = await page1.$('#fsl > a:nth-child(4)');  

const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())));  // define promise
await link.click({button: 'middle'});                 
const page2 = await newPagePromise;                  
await page2.bringToFront();                           
  
...

await browser.close();                               

What is the equivalent code string "define promise" for python and pyppeteer?

Qwentor
  • 31
  • 1
  • 4

1 Answers1

3

My code below maybe help you

result_page = asyncio.get_event_loop().create_future() # create new promise

# bind promise to watch event targetcreated, must before click to link
browser.once('targetcreated', lambda target: result_page.set_result(target))

await link.click({button: 'middle'});     # click link and open to other tab

page_in_new_tab = await (await result_page).page() # page in new tab here