Кукольник не ждет перерыва - PullRequest
0 голосов
/ 28 июня 2018

У меня есть страница со списком названий компаний. Этот список изначально ограничен 200 результатами, но есть ссылка, чтобы удвоить этот предел. С каждым кликом время загрузки увеличивается до нескольких минут.

Я использую следующий код.

/**
 * @param {object} page - a puppeteer page object
 * @param {number} by - how many times I need to click on the link
 */
async function multiply(page, by = 5) {
    for (let i = 0; i < by; i++) {
        await Promise.all([
            // Manual clicking of the link
            page.$eval('p a', el => el.click()),

            // set a timeout of 8 minutes
            page.waitForNavigation(480000) 
        ]).catch(e => console.log(e));
    }
}

Я ожидаю тайм-аут 8 минут, но я получаю следующую ошибку:

Error: Navigation Timeout Exceeded: 30000ms exceeded

Я также пытался дождаться перехода , прежде чем нажмет на ссылку. Затем я попытался вручную подождать определенный тайм-аут с помощью page.waitFor(i ** 2 * 10000) - но безуспешно. Ожидание селектора в HTML тоже не сработало.

Я не использую page.click('p a'), потому что это подтверждается как ошибка здесь .

Возможно, вы захотите взглянуть на еще один уже решенный вопрос к моему проекту, который немного подробнее описывает мой вариант использования.

Если вы хотите посмотреть поближе, вы можете клонировать полное репо, нажав bitbucket.org / ytNewskews .

1 Ответ

0 голосов
/ 28 июня 2018

page.waitForNavigation(options) ожидает объект с такими свойствами:

   // set a timeout of 8 minutes
   page.waitForNavigation({timeout: 480000})

По умолчанию 30000 мс. Значение по умолчанию можно изменить с помощью метода page.setDefaultNavigationTimeout (timeout).

От: API Puppeteer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...