【问题标题】:Loop through parameter values - NodeJS (Puppeteer)循环遍历参数值 - NodeJS (Puppeteer)
【发布时间】:2020-12-18 14:41:05
【问题描述】:

我正在使用 for-Each 循环将从 MongoDb 获得的值传递给 NodeJS Puppeteer 中的参数。

这是 for-Each 循环


dataGood = [{title: "username1", password: "password2"},{title: "username1", password: "password2"}]


 await dataGood.forEach(async element => {
        let title = element.title;
        let pass = element.password;
        let tags = element.tags;
        let actions = element.actions;
        
        await ig.initialize();

        await ig.login(title, pass);
  
        await ig.liketagsprocess(tags, actions);

如果dataGood 中有单个数据,则此代码可以正常工作。

但是如果有 2 个或更多的值,它就不起作用了。

这是数据传递的地方

initialize: async() => {
        instagram.browser = await puppeteer.launch({
            headless: false,
        });

        instagram.page = await instagram.browser.newPage();
    },

    login: async(username , password) => {

        console.log(username, password)


        await instagram.page.goto(BASE_URL, {waitUntil: 'load', timeout: 0});

        await instagram.page.waitForSelector('input[name="username"]');

        await instagram.page.type('input[name="username"]', username, {delay: 100});

        await instagram.page.type('input[name="password"]', password, {delay: 100});


Console Log : // Suppose usernames are username 1 and Username 2

username1 password1
username2 password2

木偶师的主要问题是如何出现的。

dataGoodfor-each 循环打开了2 puppeteer windows

两个独立的铬窗口打开。就会发生这种错误。

请参考这些图片。

这些不是同一个铬窗口的标签,而是完全不同的窗口

如何循环访问参数,以便它们在各自的 puppeteer 窗口中单独工作。

【问题讨论】:

    标签: node.js for-loop parameter-passing puppeteer


    【解决方案1】:

    如果你想在同一个 chromium 实例中打开所有迭代,那么你应该调用

    await ig.initialize();
    

    在循环之外。

    除了Array.forEach 的执行方式可能与您期望的不同之外,迭代异步函数很棘手。查看更多关于它的背景here

    使用常规的for 循环或for...of,您的迭代器将按严格的顺序执行,没有任何副作用:

    await ig.initialize();
    for (const element of dataGood) {
      let title = element.title
      let pass = element.password
      await ig.login(title, pass)
    }
    

    如果您仍想在 forEach 中执行此操作,我建议重构您当前的代码以处理被调用函数的异步性质。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2015-06-16
      相关资源
      最近更新 更多