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()开始在新页面上工作。
您不需要移动到新选项卡。
要获取任何页面的标题,您可以使用:
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
根据Puppeteer 文档:
页面标题()
的快捷方式
page.mainFrame().title()。
因此,您应该使用page.title()获取新打开的页面的标题。
或者,您可以通过使用以下方法获得轻微的性能提升:
page._frameManager._mainFrame.evaluate(() => document.title)
Run Code Online (Sandbox Code Playgroud)
注意:
await调用时请务必使用运算符page.title(),因为必须先下载标题标签,然后 Puppeteer 才能访问其内容。
| 归档时间: |
|
| 查看次数: |
10673 次 |
| 最近记录: |