使用puppeteer连接访问页面时出现问题



我正试图使用puppeteer库从现有的chrome页面中抓取信息以供学习。我已经用调试模式打开了chrome,收到了我所在的chrome页面的ws-url,并成功连接。这是连接代码:

//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
});

我连接到的页面在youtube视频的url中。我的代码的目的是找到我当前正在观看的视频的浏览量,并将其记录到控制台。当我在打开新浏览器时使用了这段代码时,这很容易,但现在我已经连接到一个现有的页面,我真的不明白发生了什么。我不知道如何访问页面中的信息,在正常的浏览器中打开你只需打开一个新页面,转到url,并将其保存到变体中。但现在我不知道如何从页面中抓取信息,因为它已经打开了。这是我的代码:

//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

访问此元素的正确语法是什么?

browser.page.$x无效。你需要在浏览器的页面数组中找到页面

const pages = await browser.pages();
const yourPage = pages.find(page => page.url() === 'someUrlToLookAt');

最新更新