кукловод не открывает URL без протокола - PullRequest
0 голосов
/ 30 августа 2018
const puppeteer = require('puppeteer');

const browser = await puppeteer.launch();
const page = await browser.newPage();

Этот работает

await page.goto('https://example.com');

Это не работает (без протокола, т.е. http / https)

await page.goto("www.example.com');

выдает ошибку

Ошибка протокола (Page.navigate): невозможно перейти к неверному URL-адресу

Почему он не добавляет протокол, как это происходит при открытии в Google Chrome?

1 Ответ

0 голосов
/ 30 августа 2018

Google Chrome Omnibox (адресная строка) имеет встроенную функциональность для обработки множества сложностей, таких как: добавление протоколов, автозаполнение и т. Д.

Puppeteer предоставляет API для управления Chrome или Chromium через Протокол DevTools , поэтому большая часть этой функциональности в настоящее время выходит за рамки Puppeteer.

Документация Puppeteer для функции page.goto() прямо заявляет:

URL должен включать схему, например, https://.

Это связано с тем, что page.goto() использует Page.navigate из протокола Chrome DevTools.

Исходный код Chromium показывает, что навигация с помощью Page.navigate явно проверена на действительность, и если URL-адрес недействителен, он вернет ошибку «Невозможно перейти к недопустимому URL-адресу».

Вы можете легко создать функцию в Node.js, которая будет добавлять протоколы к URL-адресам, и это может стать решением вашей проблемы.

...