Решил проблему с помощью метода waitForSelector()
Вот (почти) готовый код для извлечения номера с авито (оформляем в виде функции и передаем ссылку как аргумент и всё :) )
const puppeteer = require('puppeteer');
let scrape = async () => {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(0);
//имитируем мобилку
await page.setUserAgent('Mozilla/5.0 (Linux; Android 7.0; NEM-L51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.81 Mobile Safari/537.36');
await page.setViewport({width: 480, height: 920});
//переходим по ссылке
await page.goto('https://m.avito.ru/samara/avtomobili/chevrolet_captiva_2009_2005746471');
//кликаем по ссылке "позвонить"
await page.click('a[data-marker="item-contact-bar/call"]');
//ждем, когда загрузится блок с номером
await page.waitForSelector('span[data-marker="phone-popup/phone-number"]');
//извлекаем номер и возвращаем
const result = await page.evaluate(() => {
return document.querySelector('span[data-marker="phone-popup/phone-number"]').innerHTML;
});
return result;
};
scrape().then((value) => {
console.log(value);
});