puppeteer waitForNavigator 不起作用,多窗口的切换

puppeteer waitForNavigator 不起作用,多窗口的切换

月光魔力鸭

2019-06-21 13:33 阅读 1441 喜欢 1 puppeteer 多窗口 waitForNavigator

在使用puppeteer 跳转窗口的时候,发现waitForNavigator 并不起作用,最后找到通过browser 获得page 并继续操作。

看官网API 说在click 的时候通常与waitForNavigator 一起用,最后怎么都获取不到页面并拿到截图。

最初想做的很简单,比如说:登录百度,然后输入关键词,然后找到第几个链接,点击打开新页面,等待一会再关闭。

OK,就这么简单,中间夹杂着几个截图看效果,但是按照我之前使用waitForNavigator死活拿不到。

那么像这种新开窗口的怎么处理呢?

干货在此.. 算不上干货..都不敢写大字了

let url = 'http://www.baidu.com';
const chalk = require('chalk');

const puppeteer = require('puppeteer');

async function go(){
    console.log(chalk.green(`创建浏览器`));
    const browser = await puppeteer.launch({
        executablePath : 'C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chrome.exe',
        defaultViewport : {
            width : 1920,
            height : 1080
        }
    });
    const page = await browser.newPage();
    console.log(`跳转页面:${url}`)
    await page.goto(url);

    console.log(`输入关键词`)
    await page.type('[name="wd"]','自动抓站',{delay : 100});
    await page.click('#su');
    await page.waitFor('.result.c-container:nth-child(1)>h3>a');
    console.log(`点击第10个地址`)    

    await page.click('.result.c-container:nth-child(1)>h3>a');
    await page.waitFor(5000);
//此处为重点。
   const pages = await browser.pages();
    const newPage = pages[2];
    let title = await newPage.title();
    if(title.indexOf('集散地') < 0){
        console.log(chalk.red(`error:页面位置有变化。`));
    }
    console.log(`页面:${title}`)
    let delayTime = Math.random() * 40000;
    await newPage.waitFor(delayTime);
    await browser.close();

    let awaitTime = Math.random() * 20000;
    console.log(`time : ${awaitTime}`);
    setTimeout(function(){
        go();
    },awaitTime);
}

go();

前面的跳转啊.. 输入啊 ,官网文档上都有例子,还好说,后面的获取page 我愣是没找到. 这里mark下。

转载请注明出处: https://chrunlee.cn/article/nodejs-puppeteer-pages.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
在使用marked来做md解析的时候,部分解析规则可能并不是很如意,比如说,我在md中写了a标签,但是这些标签都是在当前页面替换的,而我想要的是新打开窗口。
从上面那篇文章过来的,这里分享下nodejs对文件夹以及子文件进行批量删除的实现。
最近家里正在装修,实在是不知道怎么做,之前看好好住APP上有不少设计的图,部分还挺好看。。就去看了下有没有WEB端,结果还真有,就有了下文,我抓了几万张图片,然后根据关键字进行分类,从里面找心仪的设计。
前几天给朋友帮忙,想要一个一模一样的网站...自告奋勇去帮忙.. 结果发现之前一直没处理过类似的情况,虽然也写过爬虫,不过看了下网站,也不算麻烦。于是简单实现了这个自动抓站的功能,最终整理成为一个自动抓站的工具,能省很多的事情。
写文章总会需要一些素材,但是好多素材都是收费或有限制的,还是我要求不高,在千库网看了下还不错,有各签到还送VIP,于是就有了想法....
在我们做运维或者小工具的时候,总会有些需要提醒的事情,比如服务器宕机或者天气提醒,但是发email又会不够及时或者可能会忽略,那么短信就是一个不错的选择了
在平时nodejs练习过程中,可能会安装多个不同版本的nodejs,那么我们如何来轻松的管理和切换呢?推荐你一个nvm来试试水
最近看到知乎上一话题:微信公众号文章里的视频怎么下载?。看还是有很多人推荐啥工具啊,很是捉急,当然本次的主题也是通过程序来获取内容,但是目前来说仅仅是娱乐吧。