Проверить плохо размещенное метаобновление - PullRequest
0 голосов
/ 23 марта 2020

Я очищаю несколько страниц с помощью oop, и мне нужно проверить несколько вещей на них. На одной странице в моей цепочке плохо размещено <meta>:

…
</head>
<body>
…
    <main>
        <head>
            <meta http-equiv="refresh" content="0; URL=example.com">
        </head>
    <main>
…

Даже при waitUntil: 'networkidle2' перенаправление происходит после разрешения обещания page.goto:

    for (const url of urls) {
        await page
            .goto(url, {
                waitUntil: 'networkidle2',
            })
            .then(callback);
    }

Так если выполнить какие-либо проверки, например $$eval, контекст страницы будет уничтожен. Конечно, я могу go с waitForSelector, но я хочу выполнить свои проверки на исходном URL-адресе, а не на перенаправленном URL-адресе.

Как я могу обработать эту ошибку или, возможно, как можно предотвратить это, не используя никаких тайм-аут хаков?

1 Ответ

0 голосов
/ 23 марта 2020

Если я правильно понимаю, вам нужно предотвратить мгновенное перенаправление на стороне клиента. Не уверен, что любой из этих способов подойдет, но вы можете попробовать любой из них по отдельности или вместе:

  1. Используйте page.setRequestInterception() для отмены перенаправления.
  2. Обрабатывайте 'domcontentloaded' событие для удаления meta element.
  3. Используйте page.evaluateOnNewDocument() для удаления meta element.
  4. Сохраните page.content() значение, удалите meta элемент в источнике и примените его снова с page.setContent().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...