我正在尝试使用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()
开始处理新页面。
答案 0 :(得分:3)
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