Кукольник page.waitForNavigation () истек - PullRequest
0 голосов
/ 05 апреля 2020

У меня возникают трудности с использованием кукловода, чтобы нажать кнопку и перейти на следующую страницу. Всякий раз, когда я запускаю программу, она прерывается и выдает мне: TimeoutError: Превышено время ожидания навигации 30000 мс. Моя программа в настоящее время просто вводит адрес на ubereats.com и нажимает кнопку «Найти еду».

Я уже использую

await Promise.all([
        page.waitForNavigation(),
        page.click("#wrapper > main > div.ao.ap.aq.ar.af > div.ag.bq.br.bs.bn > div > button"),
    ]);

Когда я попробовал один и тот же код (с разными селекторами) в Google .com это работает. Когда я запустил его с безголовым значением false, он показал ввод адреса и прокрутку по центру на кнопке, но потом ничего не произошло. Это сработало, когда я вручную нажал на кнопку. Я также попробовал это со всеми различными вариантами waitForNavigation. Любое руководство будет очень полезным! Заранее спасибо.

Полный код для справки:

async function scrapeProduct(url, address) {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.goto(url);

    await page.type("#location-typeahead-home-input", address);
    await Promise.all([
        page.waitForNavigation(),
        page.click("#wrapper > main > div.ao.ap.aq.ar.af > div.ag.bq.br.bs.bn > div > button"),
    ]);
    await page.screenshot({path: "test.png"});

    browser.close();
}

1 Ответ

0 голосов
/ 06 апреля 2020
  await page.waitForNavigation({waitUntil: 'networkidle0',timeout:0});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...