从新打开的页面木偶操作者获取标题

时间:2017-11-16 11:44:57

标签: 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();

我无法弄清楚如何使用browser.page()开始处理新页面。

2 个答案:

答案 0 :(得分:3)

根据Puppeteer Documentation

  

page.title()

           

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

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

或者,您可以使用以下方法来稍微提高性能:

page._frameManager._mainFrame.evaluate(() => document.title)
  

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

答案 1 :(得分:2)

您无需转到新标签页。

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

const pageTitle = await page.title();

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

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

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