Проблема доступа к странице при использовании подключения кукловода - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь собрать информацию с существующей страницы chrome в учебных целях, используя библиотеку кукловодов. Я открыл chrome в режиме отладки, получил URL-адрес страницы chrome, на которой я нахожусь, и успешно подключился. Вот код подключения:

//open library
const puppeteer = require('puppeteer');
//connect to excisting open page
async function connectToChrome()
    {
        //Connect to excisting browser
        const wsChromeEndpointurl = 'ws://127.0.0.1:9222/devtools/page/5D6126455A889AA7D17B66C10729F352';
        const browser = await puppeteer.connect
            ({
                  browserWSEndpoint: wsChromeEndpointurl
            });

Страница, к которой я подключился, находится внутри URL-адреса видео на YouTube. Цель моего кода - найти количество просмотров видео, которое я сейчас смотрю, и записать его на консоль. Когда я использовал этот код при открытии нового браузера, это было очень легко, но теперь, когда я подключился к существующей странице, я не совсем понимаю, что происходит. Я не совсем уверен, как получить доступ к информации на странице, в обычном браузере вы просто открываете новую страницу, go для ссылки, и сохраняете ее в варианте. Но сейчас я понятия не имею, как соскрести информацию со страницы, так как она уже открыта. Вот мой код:

//open library
const puppeteer = require('puppeteer');
//connect to excisting open page
async function connectToChrome()
    {
        //Connect to excisting browser
        const wsChromeEndpointurl = 'ws://127.0.0.1:9222/devtools/page/5D6126455A889AA7D17B66C10729F352';
        const browser = await puppeteer.connect
            ({
                  browserWSEndpoint: wsChromeEndpointurl
            });
        const [el] = await browser.page.$x('//*[@id="count"]/yt-view-count-renderer/span[1]');
        const txt = await el.getProperty('textContent');
        const txtJson = await txt.jsonValue();
        console.log(txtJson);

    };

connectToChrome();

Этот код вернется, не понимая следующего предложения строки, так как он не определен:

browser.page.$x

Каким будет правильный синтаксис для доступа к этому элементу?

1 Ответ

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

browser.page.$x недействительно. Вам нужно найти страницу в массиве страниц браузера

const pages = await browser.pages();
const yourPage = pages.find(page => page.url() === 'someUrlToLookAt');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...