从新打开的页面 puppeteer 获取标题

Ale*_*lex 4 javascript puppeteer

我正在尝试获取一个新选项卡并使用puppeteer.

这就是我所拥有的

// use puppeteer
const puppeteer = require('puppeteer');

//set wait length in ms: 1000ms = 1sec
const short_wait_ms = 1000

async function run() {
    const browser = await puppeteer.launch({
        headless: false, timeout: 0});
    const page = await browser.newPage();

        await page.goto('https://biologyforfun.wordpress.com/2017/04/03/interpreting-random-effects-in-linear-mixed-effect-models/');

    // second page DOM elements
    const CLICKHERE_SELECTOR = '#post-2068 > div > div.entry-content > p:nth-child(2) > a:nth-child(1)';

    // main page
    await page.waitFor(short_wait_ms);
    await page.click(CLICKHERE_SELECTOR);


    // new tab opens - move to new tab
    let pages = await browser.pages();

    //go to the newly opened page

    //console.log title -- Generalized Linear Mixed Models in Ecology and in R

}

run();
Run Code Online (Sandbox Code Playgroud)

我不知道如何browser.page()开始在新页面上工作。

Eco*_*ual 9

您不需要移动到新选项卡。

要获取任何页面的标题,您可以使用:

const pageTitle = await page.title();
Run Code Online (Sandbox Code Playgroud)

此外,在单击某些内容并等待新页面加载后,您应该等待加载事件或网络空闲:

// Wait for redirection
await page.waitForNavigation({waitUntil: 'networkidle', networkIdleTimeout: 1000});
Run Code Online (Sandbox Code Playgroud)

检查文档:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitfornavigationoptions


Gra*_*ler 7

根据Puppeteer 文档

页面标题()

的快捷方式page.mainFrame().title()

因此,您应该使用page.title()获取新打开的页面的标题。

或者,您可以通过使用以下方法获得轻微的性能提升:

page._frameManager._mainFrame.evaluate(() => document.title)
Run Code Online (Sandbox Code Playgroud)

注意:await调用时请务必使用运算符page.title(),因为必须先下载标题标签,然后 Puppeteer 才能访问其内容。