javascript - 使用 Nightmare 屏幕截图选择器制作多个屏幕截图

标签 javascript node.js nightmare

我有一个包含一组“li”元素的网页。我需要为每个“li”元素制作屏幕截图并将其保存到新文件中。 我正在尝试使用 Nightmare 屏幕截图选择器。 但我得到了一些具有相同屏幕截图但名称不同的文件(来 self 的数组)。

这是我的代码。

const Nightmare     = require('nightmare');
const fs            = require('fs');
const screenshotSelector = require('nightmare-screenshot-selector');
Nightmare.action('screenshotSelector', screenshotSelector);

function savePicture(picture) {
    picture = ['v1', 'v2', 'v3'];
    let browser = Nightmare({
        show: false,
        webPreferences: {
            partition: 'nopersist'
        }
    });
    browser   
        .goto('https://www.google.com')
    picture.forEach(v => {  
        browser   
            .wait(7000)
            .screenshotSelector(`li[class="${v}"]`) 
            .then(function (data) {                 
                fs.writeFileSync(`img/${v}.png`, data)
            })
            .catch((error) => {
                console.log('Error loading the page', error)
            })
    })
    browser.end();
}

最佳答案

我插入了一个 .end() 调用,对我有用。稍微修改了代码,抓取 Google 主页的两个区域:

function savePicture(picture) {
    picture = ['div#hplogo', 'div.tsf-p'];
    let browser = Nightmare({
        show: false,
        webPreferences: {
            partition: 'nopersist'
        }
    });
    browser   
        .goto('https://www.google.com')
    picture.forEach(v => {  
        browser   
            .wait(2000)
            .screenshotSelector(v) 
            .then(function (data) {                 
                fs.writeFileSync(`img/${v}.png`, data)
            })
            .then(()=> {
                browser.end();
            })
            .catch((error) => {
                console.log('Error loading the page', error)
            })
        })
    }

关于javascript - 使用 Nightmare 屏幕截图选择器制作多个屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46799374/

相关文章:

Javascript/HTML - 在鼠标悬停和鼠标移出时隐藏和显示图像

javascript - 将 CSS 应用到 Javascript 代码中

web-crawler - 使用nightmare.js拒绝了如何解决自动访问此页面的问题

javascript - Nightmare - 文件来自哪里?

node.js - 使用回调,在nodejs中 promise

javascript - 通过自动添加人员来创建Linkedin机器人

javascript - 旋转木马上的第 N 个 child 不工作

javascript - 即使存在非数字字符也要计数的数字计数器

javascript - 浏览器和服务器 JavaScript 中的十六进制字符串输出不同

javascript - 用于使用 Node.js 模块完成代码的 WebStorm JSDoc 类声明